基于Quartus六十进制计数器的设计完整资料.docx
- 文档编号:25182350
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:51
- 大小:1.12MB
基于Quartus六十进制计数器的设计完整资料.docx
《基于Quartus六十进制计数器的设计完整资料.docx》由会员分享,可在线阅读,更多相关《基于Quartus六十进制计数器的设计完整资料.docx(51页珍藏版)》请在冰豆网上搜索。
基于Quartus六十进制计数器的设计完整资料
EDA技术实践课程设计
课程EDA技术实践课程设计
题目六十进制计数器
院系电气信息工程学院电气系
专业班级
学生姓名
学生学号
指导教师
2014年7月25日
EDA技术实践课程设计任务书
课程EDA技术实践课程设计
题目六十进制计数器
专业姓名学号
主要内容:
利用QuartusII设计一个六十进制计数器。
该电路是采用整体置数法接成的六十进制计数器.首先需要两片74160接成一百进制的计数器,然后将电路的59状态译码产生LD′=0信号,同时加到两片74160上,在下一个计数脉冲(第60个计数脉冲)到达时,将0000同时置入两片74160中,从而得到六十进制计数器。
主要要求如下:
(1)每隔1个周期脉冲,计数器增1;
(2)当计数器递增到59时,进位端波形发生跳变,说明计数器产生进位信号,之后计数器会自动返回到00并重新计数;
(3)本设计主要设备是两片74160同步十进制计数器,时钟信号通过建立波形文件得以提供。
主要参考资料:
[1]朱正伟.EDA技术及应用[M]。
第2版.北京:
清华大学出版社,2013。
[2]李国洪。
EDA技术与实验[M]。
北京:
机械工业出版社,2009。
[3]陈忠平,高金定,高见芳.基于QuartusII的FPGA/CPLD设计与实践[M]。
北京:
电子工业出版社,2010.
[4]杨颂华。
数字电子技术基础[M].第2版.西安:
西安电子科技大学出版社,2009.
[5]阎石.数字电子技术基础[M]。
第5版。
北京:
高等教育出版社,2006。
[6]康华光。
电子技术基础:
数字部分[M]。
北京:
高等教育出版社,2000。
完成期限2014.7。
21—-2014。
7.25
指导教师
专业负责人
2014年7月18日
目 录
1设计
六十进制计数器的功能要求:
(1)每隔1个周期脉冲,计数器增1;
(2)当计数器递增到59时,进位端波形发生跳变,说明计数器产生进位信号,之后计数器会自动返回到00并重新计数;
(3)本设计主要设备是两片74160同步十进制计数器,时钟信号通过建立波形文件得以提供。
图1.1同步十进制计数器
打开QuartusII软件,建立一个项目文件,以画原理图为设计方法,再新建一个block文件:
点击New,在DeviceDesignFiles标签下选择第二项,点击OK。
2方案选择与电路原理图的设计
使用具有一定频率的时钟信号作为计数器的时钟脉冲作为同步控制信号,整体电路通过两片74160与其他门电路辅助等单元电路构成以实现置数进位功能。
图2。
1为六十进制计数器的总体电路原理框图。
图2。
1电路原理框图
2.1单元电路一:
十进制计数器电路(个位)
本电路采用74160作为十进制计数器,它是一个具有异步清零、同步置数、可以保持状态不变的十进制上升沿计数器。
每输入10个计数脉冲,计数器便工作一个循环,并且在进位端RCO产生一个进位输出信号。
其功能表如表2—1所示,连接方式如图2。
2所示。
此片工作时进位端RCO在没有进位时RCO=0,因此第二片ENP·ENT=0,第二片不工作。
表2—1同步十进制计数器功能表
CLK
RD′
LD′
ENP
ENT
工作状态
×
0
×
×
×
置零
↑
1
0
×
×
预置数
×
1
1
0
1
保持
×
1
1
×
0
保持
↑
1
1
1
1
计数
在新建好的block文件的图形编辑窗口中双击鼠标,或点击图中“符号工具"按钮,或者选择菜单Edit下的InsertSymbol命令,即可对元件进行选择.选择元件库中的others—maxplus2—74160。
点击工具栏中OrthogonalNodeTool按钮便可以对端子间进行连线,其中值得注意的是,点击工具栏中OrthogonalBusTool按钮可以通过总线进行连接,如图2.2中四个输出端QA、QB、QC、QD可以通过一根总线连接但可表示四位输出,而输出符号Output的Pinname应改为Q0[3。
.0]。
图2.2十进制计数器电路(个位)
2.2单元电路二:
十进制计数器(十位)
本电路同样采用74160作为十进制计数器,如图2.3所示。
当第一片进位端RCO进位即RCO=1时,第二片ENP·ENT=1,第二片开始计数工作,第一片每计10个数,第二片加1(十位),当加到59时,由辅助门电路接入置数端使计数器输出置0000,并重新开始循环。
由于第二片(十位)74160输出端线路并不繁杂,因此本单元电路的四位输出端可分别直接连接输出符号Output,以便于观察波形。
图2。
3十进制计数器电路(十位)
2.3单元电路三:
置数与进位电路
通过创建波形文件,产生具有一定频率的时钟脉冲提供触发信号,通常称这个触发信号为时钟信号(CLOCK),记做CLK。
当系统中有多个器件需要同时工作时,就可以用同一个CLK信号作为同步控制信号,比如本电路中用到的同步十进制计数器(74160).
在时钟脉冲的触发作用下,当第二片(十位)74160加到59时,便由此单元门电路接入置数端使计数器输出置0000,并重新开始循环。
点击图中“符号工具”按钮,或者选择菜单Edit下的InsertSymbol命令,在元件库中选择primitives—logic—nand4和not.其中nand4表示具有四个输入端的与非门,辅助构成六十进制计数器;not为非门,实现反相功能,并能产生进位输出(高电平)。
图2。
4置数与进位电路
3元件选取与电路图的绘制
3。
1元件选取
元件的选取包括同步十进制计数器、与非门、反相器等,具体元件名称、型号、数量及用途如表3—1所示。
表3-1元件的选取
名称
型号
数量
用途
同步十进制计数器
74160
2片
联成六十进制计数器
四端子与非门
NAND4
1个
辅助构成计数器
反相器
NOT
1个
实现反相(非)的功能
3.2电路图的绘制
首先用两片74160接成一百进制的计数器,然后将电路的第59状态译码产生LD′=0信号,同时加到两片74160上,在下一个计数脉冲(第60个计数脉冲)到达时,将0000同时置入两片74160中,从而得到六十进制计数器。
六十进制计数器的状态转换图如图3。
1所示,完整原理图如图3。
2所示。
00→01→02→03→04→05→06→07→08→09→10→11→12→13→14→15
↓
30←29←28←27←26←25←24←23←22←21←20←19←18←17←16
↓
31→32→33→34→35→36→37→38→39→40→41→42→43→44
↓
59←58←57←56←55←54←53←52←51←50←49←48←47←46←45
图3.1状态转换图
图3.2六十进制计数器原理图
4编译设计文件
QuartusII编译器的主要任务是对设计项目进行检查并完成逻辑综合,同时将项目最终设计结果生成器件的下载文件。
编译开始前,可以先对项目的参数进行设置。
编译完成以后,编译报告窗口CompilationReport会列出项目文件编译的相关信息的清单,如编译的顶层文件名、目标芯片的信号、引脚数目等等.
全编译的过程包括分析与综合(Analysis&Synthesis)、适配(Fitter)、编程(Assembler)、时序分析(ClassicalTimingAnalysis)这4个环节,而这4个环节各自对应相应的菜单命令,而且可以单独分步进行,也就是分步编译.
编译工作非常简单,单击快捷菜单中的StartCompilation按钮,或者单击菜单栏中Processing—StartCompilation,即可进行编译操作。
编译成功会弹出相应的对话框,内容为FullCompilationwassuccessful,如图4.1所示。
图4.1编译成功
5仿真设计文件
1、建立波形文件
建立波形文件用来为设计产生输入激励信号。
利用QuartusII波形编辑器可以创建矢量波形文件,后缀为.vwf。
步骤如下:
(1)选择QuartusII主界面File菜单下的New命令,弹出新建对话框(如图
5。
1所示);
图5。
1建立波形文件
(2)在新建对话框中选择OtherFile标签页,从中选择VectorWaveformFile,
点击OK按钮,则打开一个空的波形编辑器窗口(如图5.2所示);
图5.2空白波形编辑器
(3)将波形文件保存,并将原理图文件和波形文件一并加到项目之下(如图5。
3所示),点击省略号按钮,选择波形文件和原理图文件,点击AddAll即可.
图5.3添加波形文件和原理图文件
2、输入信号节点
(1)执行Edit菜单中的InsertNodeorBus命令,或者在波形编辑器在编Name列的空白处单击鼠标右键弹出InsertNodeorBus对话框,如图5。
4所示。
图5。
4添加节点或总线
(1)
(2)点击InsertNodeorBus对话框中的NodeFinder...按钮,弹出NodeFinder对话框,在窗口中添加全部信号节点,如图5.5所示。
图5。
5添加节点或总线
(2)
3、编辑输入信号
右键点击CLK—Insert—Value—Clock即可编辑时钟输入信号,如图5。
6所示。
图5。
6时钟信号的设置
设置好时钟输入信号后,将nRD输入端设置为高电平,如图5。
7所示。
这是由于本电路使用置数法实现功能进位,因此必须保证清零端始终接收无效信号。
图5。
7清零端的设置
4、仿真波形文件
QuartusII软件中默认的是时序仿真,如果进行功能仿真需要先对仿真进行设置。
六十进制计数器只需时序仿真即可辨别其设计的功能是否满足要求。
仿真过程的操作非常简单,选择QuartusII主窗口Processing菜单下的StartSimulation命令,或者直接单击快捷菜单中的StartSimulation按钮就可以开始进行仿真工作了,仿真成功就会出现如图5.8所示的对话框.
图5.8仿真成功
仿真的结果如图5。
9所示。
在时钟脉冲的触发作用下,可仿真出各个端子的输出波形。
由时序图可看出,若时钟输入脉冲的频率为f0,则Q00、Q01、Q02、Q03、Q10、Q11、Q12和Q13端输出脉冲的频率依次为1/2f0、1/4f0、1/8f0、1/16f0、1/32f0、1/64f0、1/128f0和1/512f0.
图5。
9仿真波形
仿真结果分析:
由于本六十进制计数器的时钟脉冲的参数设置为周期T=5ns,因此进位端在t=28。
5ns时输出进位信号,逻辑电平发生跳变,计数器在此时计数,如图5。
10所示。
图5.10计数进位
6总结
本课程设计就六十进制计数器系统进行原理图设计,使用软件QuartusII进行了仿真,验证了设计的合理性和可行性。
具体内容包括:
1、设计了六十进制计数器的单元电路和整体电路,包括十进制计数器单元电路(个位)、十进制计数器单元电路(十位)、置数与进位单元电路、整体电路等等,通过QuartusII平台对数字电路进行设计,尤其是时序逻辑电路当中最常用的计数器。
本课程设计也是对日常生活中经常用到的数字电路逻辑器件—六十进制计数器进行设计,如一小时六十分钟,一分钟六十秒,只要将本设计中的时钟脉冲的频率进行更改就可以变成一个计时器了,将时钟脉冲频率改为1Hz,这样每隔1s计数器加1,当加到59时计数进位,如此完成一个循环,然后计时重新开始,这便是计时器的计时功能了;
2、根据设计任务指标进行了相应元件选取,包括同步十进制计数器、与非门、反相器等等.在设计电路和画原理图的过程当中,得到了老师和同学的帮助,因此在此次课程设计当中学到了很多知识,让我对数字电路的基本器件和它们的工作原理有了更深层次的理解;
3、利用QuartusII软件进行了编译和仿真,仿真结果表明结果与理论相匹配;证明本课程设计的六十进制计数器符合基本逻辑功能要求。
参考文献
[1]朱正伟。
EDA技术及应用[M]。
第2版。
北京:
清华大学出版社,2013。
[2]李国洪。
EDA技术与实验[M]。
北京:
机械工业出版社,2009。
[3]陈忠平,高金定,高见芳。
基于QuartusII的FPGA/CPLD设计与实践[M].北京:
电子工业出版社,2010。
[4]杨颂华.数字电子技术基础[M]。
第2版。
西安:
西安电子科技大学出版社,2009。
[5]阎石。
数字电子技术基础[M].第5版.北京:
高等教育出版社,2006。
[6]康华光.电子技术基础:
数字部分[M].北京:
高等教育出版社,2000.
东北石油大学课程设计成绩评价表
课程名称
EDA技术实践课程设计
题目名称
六十进制计数器
学生姓名
学号
指导教
师姓名
职称
序号
评价项目
指标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作.
20
2
课程设计质量
课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确.
45
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值.
5
4
答辩
能正确回答指导教师所提出的问题。
30
总分
评语:
指导教师:
年月日
郑州轻工业学院
课程设计说明书
题目:
基于FPGA的UART设计
姓名:
王鹏飞
院(系):
电子信息工程学院
专业班级:
电子信息工程13-01
学号:
541301030135
指导教师:
杜海明
成绩:
时间:
2016年6月21日至2016年6月28日
郑州轻工业学院
课程设计任 务书
题目基于FPGA的UART设计
专业、班级电子信息工程13-01学号 35 姓名王鹏飞
主要内容、基本要求、主要参考资料等:
主要内容:
要求学生使用硬件描述语言描述硬件功能,利用FPGA并采用模块化设计方法设计UART(通用异步收发器)的各个模块。
其中包括波特发生器,程序控制器,UART数据接收器和UART数据发送器,本文采用的外部时钟为48MHZ,波特率为9600.在软件上进行设计、编译和仿真。
基本要求:
1、掌握FPGA的程序设计方法.
2、掌握硬件描述语言语法.
3、程序设计完成后要求在软件中实现功能仿真.
主要参考资料:
1、夏宇闻.Verilog 数字系统设计教程[M].北京:
北京航空航天大学出版社,2003
2、潘松,王国栋。
VHDL实用教程「M].成都:
电子科技大学出版社,2003。
完 成期 限:
2016。
6.21—2016。
6.28
指导教师签名:
课程负责人签名:
2016年 6月18日
基于FPGA的UART设计
摘要
UART作为RS232协议的控制接口得到了广泛的应用,将UART的功能集成到FPGA芯片中,可使整个系统更为灵活、紧凑,减小整个电路的体积,提高系统的可靠性和稳定性.提出了一种基于FPGA的UART的实现方法,具体描述了发送、接收等模块的设计,恰当使用了有限状态机,实现了FPGA上的UART的设计,给出仿真结果。
关键词FPGAUART模块化有限状态机
目 录
1FPGA与UART简介ﻩ1
1.1 FPGA介绍1
1。
2UART简介1
2UART工作原理及功能设计ﻩ3
2.1UART工作原理3
2.2UART功能设计3
2.2.1波特率发生器设计4
2.2.2发送器设计5
2.2.3接收器设计5
3.仿真8
4 总结9
1FPGA与UART简介
1.1FPGA介绍
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点.
FPGA主要特点:
1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片.
3)FPGA内部有丰富的触发器和I/O引脚.
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用.FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可.这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
1.2UART简介
通用异步收发器(UART)是一种短距离串行通信接口,主要用于计算机、微处理器与小型通信网络之间的短距离通信。
目前通信接口技术已发展成为硬件和软件相结合的综合性技术,在嵌入式系统设计中,异步串行通信接口已成为必不可少的一部分。
随着FPGA技术和嵌入式系统的发展,在单芯片上可以实现多种功能,虽然目前许多器件已经把UART集成在内,但是要求用单一芯片实现处理器和控制器等复杂功能,同时需要串行通信场合,采用高密度、大容量FPGA器件来设计UART具有很高的实用价值。
计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:
CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(FirstInputFirstOutput,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem.
它是用于控制计算机与串行设备的芯片。
有一点要注意的是,它提供了RS-232C数
据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
作为接口的一部分,UART还提供以下功能:
将由计算机内部传送过来的并行数据转换为输出的串行数据流.将计算机外部来的串行数据转换为字节,供计算机内部并行数据的器件使用。
在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。
在输出数据流中加入启停标记,并从接收数据流中删除启停标记。
处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备).可以处理计算机与外部串行设备的同步管理问题。
有一些比较高档的UART还提供输入输出数据的缓冲区,比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250.如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550UART。
2 UART工作原理及功能设计
2。
1UART工作原理
UART是一种串行数据总线,用于异步通信,并且双向通信,可实现全双工发送和接收。
基本的UART只需要两条信号线(TXD,RXD)和一条地线就可以完成数据的互相通信,接收和发送互不干扰,这样就大大节省了传输费用。
由于UART是异步通信,所以需要对数据进行同步.UART发送/接收数据的传输格式如图1所示,一个字符单位由开始位、数据位、校验位、停止位组成(其中校验位可供选)。
发送或接收一个完整的字节信息,首先是一个作为起始位的逻辑“o”位,接着是8个数据位,然后是停止位逻辑“1"位,数据线空闲时为高或“1”状态。
在字符的8位数据部分,先发送数据的最低位,最后发送最高位.每位持续时间是固定的,由发送器本地时钟控制,每秒发送的数据位个数,即为“波特率”.起始位和停止位起着很重要的作用。
显然,它们标志每个字符的开始和结束,但更重要的是他们使接收器能把他的局部时钟与每个新开始接收的字符再同步.异步通信没有可参照的时钟信号,发送器随时都可能发送数据,任何时刻串行数据到来时,接收器必须准确地发现起始位下降沿的出现时间,从而正确地采样紧接着的io或者m位(包括开始位、数据位和停止位),接收器的时钟和发送器的时钟不是同一个,因此,接收器所确定的采样点的间隔和发送器所确定的位间隔时间不同,这点要特别注意。
2.2UART功能设计
异步通信的一帧传输经历以下步骤:
1)空闲状态。
发送方连续发送信号,处于信息“1"状态。
2)开始传输。
发送方在任何时刻将传号变成空号,即“1"跳变到“0”,并持续1位时间表明发送方开始传输数据。
而同时,接收方收到空号后,开始与发送方同步,并期望收到随后的数据。
3)奇偶传输。
数据传输之后是可供选择的奇偶位发送或接收。
4)停止传输。
最后是发送或接收的停止位,其状态恒为“1”。
设计的基本原则是保留最主要的功能,基于FPGA的UART系统由波特率时钟发生器、接收器和发送器3个子模块组成,如图2所示。
图2 UART功能框图
2.2。
1 波特率发生器设计
波特率发生器实质是设计一个分频器,用于产生和RS232通信同步的时钟。
在系统中用一个计数器来完成这个功能,分频系数N决定了波特率的数值。
该计数器一般工作在一个频率较高的系统时钟下,当计数到N/2时将输出置为高电平,再计数到N/2的数值后将输出置为低电平,如此反复即可得到占空比50%的波特率时钟,具体的波特率依赖于所使用的系统时钟频率和N的大小。
如系统时钟频率是6.4MHz,要求波特率是9600,则16倍波特率时钟的周期约等于42个系统时钟周期,则计数器取42/2=21时,当计数溢出时输出电平取反就可以得到16倍约定波特率的时钟。
使用VHDL来描述波特率发生器的完整代码如下:
Process(rst,clk6。
_4M)
ifrst=’0’then
count〈=0;
bclkr<='0';
elsif rising_edge(clk6_4M) then
if(count=20)
count<=0;
bclkr<=notbclkr;
else
count〈=count+1;
endif;
end if;
endprocess;
2.2。
2 发送器设计
UART发送器的设计较容易,只要每隔一个发送周期按照数据帧格式及要求的速率输出数据即可。
没有数据要发送时,发送数据寄存器为空,发送器处于空闲状态;当检测到发送数据寄存器满信号后,发送器及发送起始位,同时8个数据位被并行装入发送移位寄存器停止位紧接着数据位指示一帧数据结束。
只有发送数据寄存器为空时,RAM中的待发数据才能被装入、程序中使用计数器要保证各位周期定时正确.
2.2.3 接收器设计
接收器的工作过程如下,串行数据帧和接收时钟是异步的,发送
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Quartus 十进制 计数器 设计 完整 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)