UART的FPGA实现过程 - 附完整的FPGA,ModelSim,MCU代码和工程,以及实现文档
使用FPGA完成了UART的设计,包含设计文档,FPGA源代码和工程文件,ModelSim的testbench和工程,硬件测试的AVR源代码和IAR工程等,有参考价值,以此借阿莫的地盘作新网站(创造力电子开发网-http://www.edaok.net)的宣传,欢迎大家访问,申请加“酷”,不通过请阿莫反馈建议
================【以下为文档和源代码工程的打包】================
UART的FPGA实现设计文档,包含完整的源代码和工程ourdev_446226.rar(文件大小:1.96M) (原文件名:UART的FPGA设计文档.rar)
=========文档预览==========
文档开始简要地介绍了UART协议,如下图是ART帧格式示意图:
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446219.jpg
图 1.1UART帧格式示意图 (原文件名:图 1.1UART帧格式示意图.jpg)
UART可以使用奇偶校验,如下图介绍了奇偶校验实现的RTL级示意图
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446220.jpg
图 1.2奇偶校验RTL示意图 (原文件名:图 1.2奇偶校验RTL示意图.jpg)
以下是我设计过程的工作环境,作为参考,目的是为了以最快的速度测试本设计,再进入学习和改进:
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446221.jpg
表 2.1工作环境参考表 (原文件名:表 2.1工作环境参考表.jpg)
下图是设计的ModelSim仿真的截图,至于为什么不使用Quaatus的仿真工具?可以在ModelSim的版面了解它的优点
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446222.jpg
图 2.5ModelSim仿真截图 (原文件名:图 2.5ModelSim仿真截图.jpg)
以下是硬件测试的截图,这时,单片机操作FPGA实现的UART的方法和操作内部UART的方法一样,因为本设计的UART是根据AVR的UART而设计的,只是基址不同,其它者一样。
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446223.jpg
图 2.6PC测试过程 (原文件名:图 2.6PC测试过程.jpg)
下图是设计的框图,分为波特率发生模块,接收器模块和发送器模块。
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446224.jpg
图 2.7UART项层框图 (原文件名:图 2.7UART项层框图.jpg)
考虑到本设计的维护,升级等的方便,本设计使用状态机的编码方式设计硬件,下图是UART接收器的状态图
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446225.jpg
图 2.12接收器状态机 (原文件名:图 2.12接收器状态机.jpg)
欢迎大家访问我们的新网站 http://www.edaok.net 谢谢,对我有帮助 谢谢.COOL !
Cool后允许广告。。 不错呀。请问你的状态图用什么软件画的。 厉害!支持
状态图应该是用MS visio做的吧 不错支持一个 用smartdraw更牛b........ 多谢阿莫,状态图的确是用Visio画的,用这它几年了,这软件画这些图很方便 对这个设计的所属的“MCU外设设计”开源项目进行正当宣传
UART的FPGA实现是“MCU外设设计”开源项目的首个设计成果,还有一个虚拟液晶还在整理,
以下是这个项目的硬件框图:
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446493.jpg
“MCU外设设计”硬件框图 (原文件名:edaok_67.jpg)
由于我们还没有对这个项目作出详细的描述,致有网友问到“FPGA通过编程应该具有MCU相同的功能,包括UART,Timer,A/D,D/A等外设,您这里的MCU起的作用是什么呢?”
那么为什么我们要用到MCU,不用像NIOS这样的IP核?我先这里说明一下,目的是宣传一下我们的这个开源项目,
“如果使用Altera的NIOS,或8051等IP核,加上外设,综合后所配置的FPGA就是一个单片机,这样就是真正的SoPC了,由于像NIOS这些商业性质的处理器内核是以IP核给出,没有查看源码的权限,用户只能配置和编译,相当为SoPC选择一款单片机内核(只是这个处理器还没有被封装),但内核怎样实现我们并不知道。
所以使用像NIOS这样的IP核对于学习FPGA的朋友意义不大,因为我们的目的是学习设计逻辑,还不是学买使用别人的逻辑,但做产品时由于考虑多方面的因素,会优先选择现有稳定可靠的逻辑(IP核)进行开发,这样会带来不少好处。如果一个不会设计逻辑的工程师,即使面前有很多现成的IP核,但也不会选择用哪一个,我们在选用一个IP核时,即使供应方封闭了源码,但是设计者心中要知道这个IP核是大概是怎样实现的,不然,虽然产品是从自己手中出来,但心底里总觉得这不是自己的产品,因为不能完全掌控它,出了问题不能很快正确定位。
在我们的这个开源项目中,没有使用这些单片机IP核,而是把这个内核从SoPC移出来,用一个单片机来替代,用外部总线和FPGA连接起来,那么,开发外设时就不用配置像NIOS这些内核了,要用这些内核会花掉我们不少的编绎时间和硬件门数,在目前项目上是划不来的。在我们的这个项目中,可以把MCU看成一个处理器,它没有GPIO、Timer、PWM、UART、SPI、I2C等外设,就只有ALU、总线等,现在我们就为这个处理器设计各种外设,使它从处理器(Processor)变成控制器(Controller)。
举个例,就像ARM7芯片的设计方式,ARM公司提供ARM处理器给芯片实现厂商,这些实现厂商加上自己设计的外设,就出来多个不同厂商的ARM7芯片了,如ATMEL,NXP,ST等的ARM7芯片。对比我们这个项目,“单片机”就是“ARM公司提供ARM处理器”,而我们就是芯片实现厂商,设计我们自己的外设,推出自己的芯片。”
=========================
以上一家之见,希望各位给些建议,使创造力的第一个项目可以健康成长 有创意,希望能从中学到些东西。 留个记号。 mark 谢谢大家的支持,佩服这里的人气和气氛,
我们的网站就这样无惊无险地面世也三天,真的很希望大家能以用户、管理等的角度给我们建议,韩信点兵,多多益善
请复制这个链接: http://www.edaok.net/thread.php?id=58
这是在我们网站的【网站发展】版面的发起的一个主题的URL,目的是问建议。
兄弟们,来吧来吧!!./emotion/em020.gif./emotion/em020.gif./emotion/em020.gif very good 我初学者
我也在自己试着写一个
目前写了 移位 检测开头 判决电平 时钟分频。
模拟了貌似还不错,不知道实际得不得,感谢大侠提供资料 我觉着楼主的态度/思路很不错 ourDEV的各位网友早晨好,创造力的动态宣传将继续...
创造力电子开发网决定把主要精力放在开源项目实施的工作上。
以下是【MCU外设设计】开源项目的介绍和实施操作
“MCU外设设计”开源项目介绍
====================================================================================================
单片机时代的早期,虽然单片机内部已经集成了CPU,ROM,RAM等其本的部件和I/O等外设,但是,资源毕竟有限,想要多点I/O,找个I/O接口芯片(如8255)扩展,要个定时器,找个定时器IC(如8253)扩展,要用串行口,找个串口芯片(如8251)扩展扩展。再加ROM和RAM,一个系统下来硬件电路是很壮观的,虽然麻烦是麻烦,甚至要和二进码打交道,但是一路走过来的大侠们对此还是津津乐道,正谓痛并快乐着。
8255(并行器扩展IC)、8253(定时器扩展)、8251(串行口扩展)等,这些就是单片机的外设(Peripherals),集成在单片机芯片内的,叫片内外设。有了各种的外设,采集或接收各种环境参数或用户指令,经CPU处理,再通过各种外设控制设备。
对于单片机开发员,他们更多的是需要了解项目所使用的单片机的外设特性,充分理解外设的功能。“外设”就像程序员常用的“函数模块”,函数模块使用参数,指针,返回值作为用户接口,而外设则是以经合理编址的寄存器作为用户接口。正如Windows提供的API,程序员不需了解API的实现过程一样,单片机开发员也不需了解外设的设计过程。但是,如果不去明白一个API或外设的实现、设计过程,会是设计水平提高的一个瓶颈。
“MCU外设设计”是参与者作为外设的设计者,可以参考或仿照单片机现有的外设特性,自已重新设计,也可以是结合几款单片机它们外设的做优点,设计一个变种,也可以发挥自己的创造力,设计一个全新的外设。项目中的FPGA芯片经设计、综合、配置后,就是一个外设IC了,它提供用户使用的寄存器对FPGA进行操作,这是一个非常用趣的过程。
一个初次学习FPGA的朋友,可能会停滞在软件仿真上,当然,仿真在实现项目中仿真是一个非常重要的过程,但是它会残忍地扼杀初学者的学习冲动和兴趣,一个有趣的项目能保持学习兴趣,还能学习到项目开发的基本流程。
开源项目提供统一的硬件,模板等,参与人员拟分为下列三类:
1.网站内部技术人员,项目的主导者,负责项目的决策、进度,设计、成果整理发布等,使项目在即使没有参与者的情况下也能维护项目的发展,度过低谷。对于开源项目,一个主导团队必不可少,否则项目会松散,最终不了了之。
2.合作开发人员,对于提交项目申请并获通过的会员,创造力借用硬件测试板,在期限内完成项目的开发和文档的整理,并在创造力网站发布,这一团体对项目的进展起重要作用,一方面提升了参与者的整体水平(设计水平,更重要告诉别人你是怎样开发,这对设计工程师很重要),另一方面促进开源项目的进展。
3.购买硬件测试板的会员,对象是如果想快速通过验证项目的现有成果以达到学习的目标,或不想受合作开发的条件制约来进行开发等的会员,这些会员可以购买测试板,他们是项目经济的主要来源,这是一个很实际的问题,没有经济支持的开源项目能走开远?至少对于目前的创造力来说,“乌托邦”是行不通的。
另外,为了加大项目的透明度,和方面接受网友的监督,网站会及时更新项目的进度和计划
【相关链接】 http://www.edaok.net/posts_list.php?id=5 楼上太早了,呵呵
支持该项目!!!!!!!
但是楼上给的链接打不开,不知道怎么回事? mark 【16楼】 zchong
打不开估计属于偶尔事件
刚才登录时竟输了几次验证码都失败,输入时都是满怀信心才下手的,丢人啊 http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_448327.jpg
"MCU外设设计"测试板的3D图 (原文件名:Snap2.jpg) mark~thanks~ 建议扩一片sram,可以做个显示控制器 谢谢楼上建议,出于板子的使用目的,这个板我们不打算加RAM,下一个关于数据采集的板子就一定加个RAM了,做逻分仪等 记号了 我看了下你的网站 设计的不大气 哈,非常感谢楼上yuanshi3的关注,还请具体说说您的建议,网站还处于建设阶段,这个设计主要是主观的结果,各方面的客观建议一定会跟进。
men, come on!!! 竟和我现在项目中一部分贼相似,兄弟借几个图来写写文档
网站挺清爽,但首页有点那个...毕竟首页是第一印象嘛
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_450261.jpg
(原文件名:Snap27.jpg)
这个EDA的手势有点意思 测试板通过功能测试,符合设计的预期目标
如果你想设计一个不错的外设,并愿意参考我们的代码和文档编写要求,那么测试板提供借用,合理利用资源。
www.edaok.net
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_452284.jpg
(原文件名:edaok_1.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_452285.jpg
(原文件名:edaok_2.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_452286.jpg
(原文件名:edaok_3.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_452287.jpg
(原文件名:edaok_4.jpg)
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_452288.jpg
(原文件名:edaok_5.jpg)
欢迎访问www.edaok.net。 很好的帖子! 楼主和AMY STUDIO有什么联系吗?看网站上有的图是打的AMY的标注。
好像以前从AMY那里买过东西,有些印象。 LZ的代码没细看,但总体风格和我看到的一些商业代码很接近。不得不佩服呀~~
小声问一句,楼主搞FPGA这类东东多少年了?写多少代码了? 其实更多是用C和MCU打交道。FPGA是半路出家 网站怎么打不开了 这网站现在没了?不过这东西留着 很漂亮,MARK 很好!! 讲的不错啊!学习学习! 学习了,网站打不开 我想知道的是,给这个项目贡献的东西,是以什么授权(License)发布的。
如果这个问题没考虑过,我的建议就是考虑下License的问题…… 国内从来不重视这个问题,
这是很严重的错误。
另:目前网站域名在我这里无法解析,见下:
minux@minux-laptop ~ $ host www.edaok.net
Host www.edaok.net not found: 3(NXDOMAIN) mark mark MARK mark
下次能用 mark 支持 备用 是的,抱歉地,网站已经关闭,因不才已奋身于工业控制,具体是电机控制,无精力打理。
P.S. 对电机控制有兴趣的朋友,可联系me: e-mail: fcmc@rpm-motor.com , QQ: 395904204, blog: http://blog.ednchina.com/fcmc
下面是做EDA网站时的另一个工程项目,具体(主要目的)是用FPGA设计LCM1602(控制器)的时序,用电脑充当液晶屏,电脑和FPGA之间的通信用MCU桥接。FPGA的设计是以LCM1602控制器的时序为依据,可以以为是山寨LCM1602
http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_525154.jpg
FPGA_设计框图 (原文件名:FPGA_设计框图.jpg)
http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_525155.jpg
上位机软件截图 (原文件名:Snap106.jpg)
工程全部文件ourdev_525153.rar(文件大小:1.09M) (原文件名:VritualLcd.rar)
这个东西没有实用价值,所以不要从实用价值角度去浏览,以免不必要的争论,它只是为积累挫败、提高能力而存在。对于学习EDA,我认为仿真(初学阶段的仿真)是打击“兴趣”的元凶,甚至是扼杀。 mark mark very good~~~ mark 好帖子先占位 mark mark 很不错,谢谢 mark very good!! mark,谢谢。 下了,多谢。。。。 标记 谢谢·· mark MARK 很有帮助,但遗憾的是www.edaok.net已经关闭。
不知道”MCU外设项目“做到什么程度了,还能找到相关的资料吗?
楼主大侠的开发板能开源出来吗?或者还能”借到“?
另,请问楼主,图画得很漂亮,是用什么软件画的? 谢谢分享 好帖!学习下~ 记号 很好 支持 mark! 看看,感谢。。。。 mark下。 mark下 mark NX mark mark mark ! mark! MARK mark mark 标记 mark mark mark 不错不错
很有帮助 请问一下楼主,ARM和FPGA之间通信是采用什么方式啊?你上面是三总线结构,程序应该怎么编写呢? mark~thanks~ mark! 楼主,压缩文件怎么下不了呀...求邮一份dzsh2005@163.com万分感谢 这东西不错,大家多传些这样的好东西,谢谢分享 回复【楼主位】adeko 阿铎
-----------------------------------------------------------------------
对我很有帮助,太感谢了! 好规范,请问下那个UART的帧结构,或是时序图您是用什么软件画的? 这贴有价值,学习了。
楼主一定是个做事很用心的人 回复【楼主位】adeko 阿铎
-----------------------------------------------------------------------
正開始學 Verilog, 通訊就從 UART開始~ 希望找一個有良好底子的範例來看, 謝謝了 ! 学习ing 谢谢分享!~ 谢谢分享~~ 学习中 mark
页:
[1]
2