adeko 发表于 2009-5-20 02:46:41

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

bad_fpga 发表于 2009-5-20 04:01:46

谢谢,对我有帮助

armok 发表于 2009-5-20 04:06:31

谢谢.COOL !

Cool后允许广告。。

bynce 发表于 2009-5-20 08:13:14

不错呀。请问你的状态图用什么软件画的。

frank21 发表于 2009-5-20 08:24:37

厉害!支持
状态图应该是用MS visio做的吧

cgbabc 发表于 2009-5-20 08:24:59

不错支持一个

hitsxg 发表于 2009-5-20 09:04:24

用smartdraw更牛b........

adeko 发表于 2009-5-20 19:27:40

多谢阿莫,状态图的确是用Visio画的,用这它几年了,这软件画这些图很方便

adeko 发表于 2009-5-21 03:31:28

对这个设计的所属的“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处理器”,而我们就是芯片实现厂商,设计我们自己的外设,推出自己的芯片。”

=========================
   以上一家之见,希望各位给些建议,使创造力的第一个项目可以健康成长

999999 发表于 2009-5-21 06:17:27

有创意,希望能从中学到些东西。

pulan 发表于 2009-5-21 06:37:06

留个记号。

zhuzi1441 发表于 2009-5-21 11:59:07

mark

adeko 发表于 2009-5-22 02:52:59

谢谢大家的支持,佩服这里的人气和气氛,

我们的网站就这样无惊无险地面世也三天,真的很希望大家能以用户、管理等的角度给我们建议,韩信点兵,多多益善

请复制这个链接: http://www.edaok.net/thread.php?id=58
这是在我们网站的【网站发展】版面的发起的一个主题的URL,目的是问建议。


兄弟们,来吧来吧!!./emotion/em020.gif./emotion/em020.gif./emotion/em020.gif

155107149 发表于 2009-5-22 08:36:38

very good 我初学者
我也在自己试着写一个
目前写了 移位 检测开头 判决电平 时钟分频。
模拟了貌似还不错,不知道实际得不得,感谢大侠提供资料

richter_t 发表于 2009-5-24 23:08:42

我觉着楼主的态度/思路很不错

adeko 发表于 2009-5-26 03:06:04

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

zchong 发表于 2009-5-26 08:13:09

楼上太早了,呵呵
支持该项目!!!!!!!


但是楼上给的链接打不开,不知道怎么回事?

hao1985 发表于 2009-5-26 09:39:49

mark

adeko 发表于 2009-5-27 02:32:35

【16楼】 zchong

打不开估计属于偶尔事件

刚才登录时竟输了几次验证码都失败,输入时都是满怀信心才下手的,丢人啊

adeko 发表于 2009-5-27 03:01:01

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_448327.jpg
"MCU外设设计"测试板的3D图 (原文件名:Snap2.jpg)

soulmate 发表于 2009-5-27 07:17:47

mark~thanks~

zchong 发表于 2009-5-27 08:17:55

建议扩一片sram,可以做个显示控制器

adeko 发表于 2009-5-28 04:19:47

谢谢楼上建议,出于板子的使用目的,这个板我们不打算加RAM,下一个关于数据采集的板子就一定加个RAM了,做逻分仪等

yuhang 发表于 2009-5-28 09:42:30

记号了

yuanshi3 发表于 2009-5-28 16:00:41

我看了下你的网站 设计的不大气

adeko 发表于 2009-5-29 22:13:24

哈,非常感谢楼上yuanshi3的关注,还请具体说说您的建议,网站还处于建设阶段,这个设计主要是主观的结果,各方面的客观建议一定会跟进。

men, come on!!!

zhf0763 发表于 2009-6-3 01:44:15

竟和我现在项目中一部分贼相似,兄弟借几个图来写写文档
网站挺清爽,但首页有点那个...毕竟首页是第一印象嘛
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_450261.jpg
(原文件名:Snap27.jpg)
这个EDA的手势有点意思

adeko 发表于 2009-6-10 03:17:22

测试板通过功能测试,符合设计的预期目标

如果你想设计一个不错的外设,并愿意参考我们的代码和文档编写要求,那么测试板提供借用,合理利用资源。

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。

DanielDeng 发表于 2009-6-12 22:51:29

很好的帖子!

Friendz 发表于 2009-6-12 23:52:03

楼主和AMY STUDIO有什么联系吗?看网站上有的图是打的AMY的标注。

好像以前从AMY那里买过东西,有些印象。

windowsce 发表于 2009-6-14 00:21:57

LZ的代码没细看,但总体风格和我看到的一些商业代码很接近。不得不佩服呀~~
小声问一句,楼主搞FPGA这类东东多少年了?写多少代码了?

adeko 发表于 2009-6-15 01:57:19

其实更多是用C和MCU打交道。FPGA是半路出家

zchong 发表于 2009-12-2 10:34:10

网站怎么打不开了

16ysa 发表于 2009-12-2 14:43:20

这网站现在没了?不过这东西留着

boy364100 发表于 2009-12-2 21:05:48

很漂亮,MARK

weixintec 发表于 2009-12-2 21:24:56

很好!!

kouxiangtang 发表于 2009-12-2 22:37:06

讲的不错啊!学习学习!

hwdpaley 发表于 2009-12-21 23:22:19

学习了,网站打不开

minux 发表于 2009-12-21 23:42:57

我想知道的是,给这个项目贡献的东西,是以什么授权(License)发布的。

如果这个问题没考虑过,我的建议就是考虑下License的问题…… 国内从来不重视这个问题,
这是很严重的错误。

另:目前网站域名在我这里无法解析,见下:
minux@minux-laptop ~ $ host www.edaok.net
Host www.edaok.net not found: 3(NXDOMAIN)

wodetianmyday 发表于 2009-12-30 12:45:47

mark

sagetom 发表于 2009-12-30 14:41:18

mark

gibson08 发表于 2010-1-1 16:47:40

MARK

boboo 发表于 2010-1-1 17:20:49

mark

下次能用

Danson.Shen 发表于 2010-1-2 19:51:59

mark

icefiring 发表于 2010-1-4 15:52:49

支持

zooky 发表于 2010-1-4 18:14:27

备用

adeko 发表于 2010-1-12 02:25:52

是的,抱歉地,网站已经关闭,因不才已奋身于工业控制,具体是电机控制,无精力打理。

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,我认为仿真(初学阶段的仿真)是打击“兴趣”的元凶,甚至是扼杀。

zj8899 发表于 2010-1-30 20:42:22

mark

ep1c3 发表于 2010-2-28 22:25:18

mark

boy364100 发表于 2010-3-1 00:11:46

very good~~~

sup999 发表于 2010-3-11 16:00:26

mark

bodyopq 发表于 2010-3-11 18:55:39

好帖子先占位

wuyongqing1960 发表于 2010-3-12 11:43:21

mark

avrwoo 发表于 2010-3-12 15:18:19

mark

avic 发表于 2010-3-13 09:26:15

很不错,谢谢

cihu 发表于 2010-3-13 21:37:55

mark

swarron 发表于 2010-4-2 09:43:45

very good!!

cndongj 发表于 2010-4-2 14:34:34

mark,谢谢。

jerry2cool 发表于 2010-4-2 17:27:04

下了,多谢。。。。

gwh1128 发表于 2010-4-13 12:57:26

标记

xiachungang 发表于 2010-6-8 18:15:27

谢谢··

joni 发表于 2010-6-8 18:23:00

mark

quzegang 发表于 2010-6-8 19:46:15

MARK

ifree64 发表于 2010-6-8 21:59:38

很有帮助,但遗憾的是www.edaok.net已经关闭。

不知道”MCU外设项目“做到什么程度了,还能找到相关的资料吗?
楼主大侠的开发板能开源出来吗?或者还能”借到“?

另,请问楼主,图画得很漂亮,是用什么软件画的?

whitelight 发表于 2010-6-8 22:58:05

谢谢分享

lanseiboy 发表于 2010-6-10 01:33:39

好帖!学习下~

wx2k 发表于 2010-6-10 06:22:05

记号

llssr 发表于 2010-6-10 18:21:30

很好 支持

Meteora 发表于 2010-6-10 18:22:48

mark!

jerry2cool 发表于 2010-6-11 16:40:58

看看,感谢。。。。

skyline1982 发表于 2010-6-11 20:24:02

mark下。

ye_song 发表于 2010-6-12 00:08:08

mark下

wanwzy 发表于 2010-7-6 16:49:16

mark

Adrian 发表于 2010-7-9 08:48:01

NX

eeko2005 发表于 2010-8-6 10:24:59

mark

mcukilller 发表于 2010-8-6 10:27:44

mark

dasemo2008 发表于 2010-8-18 14:53:05

mark !

Meteora 发表于 2010-8-18 15:32:26

mark!

fenghe123 发表于 2010-8-21 01:45:49

MARK

joni 发表于 2010-9-12 19:24:53

mark

myhonour 发表于 2010-9-13 07:30:58

mark

gwh1128 发表于 2010-9-17 16:59:33

标记

liurangzhou 发表于 2010-9-17 18:30:05

mark

avrwoo 发表于 2010-9-17 18:43:43

mark

Nuist_Gwgj 发表于 2010-9-24 14:39:43

mark

longhaihai 发表于 2010-10-4 18:32:57

不错不错
很有帮助

zhengchengkun 发表于 2010-10-5 11:26:46

请问一下楼主,ARM和FPGA之间通信是采用什么方式啊?你上面是三总线结构,程序应该怎么编写呢?

kunpeng032 发表于 2010-10-5 12:48:06

mark~thanks~

jack_yu 发表于 2010-10-5 15:06:03

mark!

515666524 发表于 2010-10-30 15:36:09

楼主,压缩文件怎么下不了呀...求邮一份dzsh2005@163.com万分感谢

WBH_LTT 发表于 2010-11-2 20:20:47

这东西不错,大家多传些这样的好东西,谢谢分享

heijichang 发表于 2010-11-17 20:31:27

回复【楼主位】adeko 阿铎
-----------------------------------------------------------------------

对我很有帮助,太感谢了!

zheren 发表于 2010-11-20 13:14:10

好规范,请问下那个UART的帧结构,或是时序图您是用什么软件画的?

yisea123 发表于 2010-11-25 13:16:43

这贴有价值,学习了。

楼主一定是个做事很用心的人

hometainan 发表于 2010-12-27 10:46:10

回复【楼主位】adeko 阿铎
-----------------------------------------------------------------------

正開始學 Verilog, 通訊就從 UART開始~ 希望找一個有良好底子的範例來看, 謝謝了 !

Tomas_Yung 发表于 2010-12-27 18:51:39

学习ing

ljt8015 发表于 2010-12-27 20:14:30

谢谢分享!~

superbtt 发表于 2011-1-6 16:03:41

谢谢分享~~

shexujia 发表于 2011-2-27 15:03:24

学习中

imjacob 发表于 2011-2-28 16:43:35

mark
页: [1] 2
查看完整版本: UART的FPGA实现过程 - 附完整的FPGA,ModelSim,MCU代码和工程,以及实现文档