基于fpga十进制同步计数器.docx
- 文档编号:23448055
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:9
- 大小:347.64KB
基于fpga十进制同步计数器.docx
《基于fpga十进制同步计数器.docx》由会员分享,可在线阅读,更多相关《基于fpga十进制同步计数器.docx(9页珍藏版)》请在冰豆网上搜索。
基于fpga十进制同步计数器
十进制同步计数器
一、实验目的
1.学习十进制同步计数器的Verilog硬件设计
2.学会并掌握QuartusII软件的使用
3.学会并掌握modelsim仿真软件的使用
二、实验原理
进制计数器具有电路结构简单、运算方便等特点,但是日常生活中我们所接触的大部分都是十进制数,特别是当二进制数的位数较多时,阅读非常困难,还有必要讨论十进制计数器。
在十进制计数体制中,每位数都可能是0,1,2,…,9十个数码中的任意一个,且“逢十进一”。
根据计数器的构成原理,必须由四个触发器的状态来表示一位十进制数的四位二进制编码。
第2个计数脉冲来到后,其状态为0010。
以下类推,可以得到如表1所示的状态表。
但需注意:
在第9个脉冲来到后,亦即计数器处于1001态时,低电平封住了F2的置1端,Q1的高电平又使K4=1,故第十个计数脉冲来到后,F2、F3状态不变,F1、F4同时置0,计数器跳过多余的6个状态,完成一次十进制计数循环。
计数N
Q4Q3Q2Q1
十进制
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
8
9
1001
9
10
1010
*
11
1011
*
12
1100
*
13
1101
*
表1同步十进制加法计数器状态表
为了满足十进制加法计数器的原理,本实验用Verilog程序在FPGA/CPLD中来实现。
首先设计一个程序,程序为脉冲输入,设输出的四位码为q[3:
0],十进制计数值为count,脉冲上升沿时q值+1,直到q=9时count=1,q置零重新开始计数直至下一个q=9,count=2,依次循环。
三、实验任务
1.根据实验目的编写verilog程序
2.将设计好的Verilog译码器程序在QuartusII上进行编译
3.对程序进行适配、仿真,给出其所有信号的时序仿真波形图(注意仿真波形输入激励信号的设置)。
本实验要求自己设置clr值,理解清零的意义
四、实验步骤:
1.建立工作库文件和编辑设计文文件
任何一项设计都是一项Project(工程),而把一个工程下的所有文件放在一个文件夹是一个非常好的习惯,以便于我们整理,利用和提取不同工程下的文件,而此文件夹将被EDA软件默认为WorkLibrary(工作库),所以第一步先根据自己的习惯,建立个新的文件夹。
(1)新建文件夹:
在E盘建立并保存工程,文件夹取名myproject,工程取名为cnt10_1
(2)输入源程序:
打开QuartusII,选择菜单File-->New-->DesignFiles-->VerilogHDLFile-->OK(如下图所示)
代码如下:
modulet10_1(clr,clk,q,cout);
inputclr,clk;
output[3:
0]q;
outputcout;
reg[3:
0]q;
regcout;
always(posedgeclk)
begin
if(clr)q=0;
elsebegin
if(q==9)q=0;
elseq=q+1;
if(q==0)cout=1;
elsecout=0;
end
end
endmodule
(3)保存文件:
完成一步就保存一步是一个好习惯,这样即使出现意外情况,也不至于以前的努力付诸东流。
选择File-->Saveas,选择保存路径,即刚才新建的文件夹myproject,文件名应与实体名保持一致,即cnt10_1,点击保存后会跳出“Doyouwanttocreateanewprojectwiththisfile?
”选择“是”,则进入如下界面
点击Next,进入“工程设置”对话框,如图所示
第一行表示工程所在的文件夹,第二行为工程名,可以与顶层文件的实体名保持一致,也可以另取别的名字,第三行为当前工程顶层文件的实体名。
点击next,进入ADDFILE对话框,如图所示,单击AddAll按钮,将工程相关的所有VHDL文件加进工程,也可以单击“Add ...”选择性加入,按此步骤建立工程,工程已经自动将所有文件加进去了,可以直接点击next,当先直接建立工程时,需要自己添加。
(4)选择目标芯片:
我们选用的是CycloneIII系列的EP3C55F484C8,在Family栏选择芯片系列——CycloneIII,在窗口右边的三个下拉列表框选择过滤条件,分别选择Package为FBGA、Pincount为484和Speedgrade为8,点击Next,如图所示
(5)工具设置:
进入EDA工具设置窗口,有三个选项,分别是选择输入的HDL类型和综合工具、选择仿真工具、选择时序分析工具,这是除QuartusII自含的所有设计工具以外的外加的工具,如果不作选择的,表示仅选择QuartusII自含的所有设计工具,本次不需要其他的设计工具,可以直接点击Next
(6)结束设置:
进入“工程设置统计”窗口,列出了与此工程相关的设置情况,设置完成,点击Finish。
2.编译
配置好后就可以进行编译了,点击ProcessingStartCompilation命令,启动全程编译编译成功后的界面如图所示
3.时序仿真
(1)打开波形编辑器:
File-->New-->Verification/DebuggingFiles-->VectorWaveform-->OK,即出现空白的波形编辑器,如图所示
(2)设置仿真时间区域:
Edit-->EndTime在Time栏中输入50,单位选择“us”,点击确定并保存波形文件
(3)将工程cnt10_1的端口信号名选入波形编辑器中:
View-->Utilitywindows-->NodeFinder,在Filter框中选Pins:
all(通常是默认选项),然后点击List,则显示出了所有引脚,如图所示
将重要的端口名拖进波形编辑器后关闭窗口
(4)编辑输入波形:
首先进行总线数据格式设置和参数设置:
点击信号左边的+号,能展开此总线中的所有信号;如果双击此+号左边的信号标记,将弹出对该信号数据格式设置的NodeProperties对话框,在该对话框的Radix下拉列表中有四种选择,这里可选择二进制Binary表达方式。
其次输入波形数据:
用鼠标在图所示信号名的某一数据区拖拉出来一块蓝色区域,然后单击左侧工具栏的问号(?
)按钮,在弹出窗口输入数据,继而在不同区域设置不同数据。
本设计不需要输入数据,脉冲及输入。
(5)仿真
仿真器参数仿真:
选择AssignmentSettings命令,在Settings窗口下选择CategorySimulatorSettings。
在右侧的Simulationmode下拉列表中选择Timing,即选择时序仿真,并选择仿真激励文件名cnt10_1.vwf。
选择SimulationPeriod栏,确认选中了“Runsimulationuntilallvectorstimuliareused”。
(6)启动仿真器:
Processing-->StartSimulation,直至出现Simulationwassuccessful,仿真结束,然后会自动弹出“SimulationReport”如图所示
4.应用RTL电路图观察器
Tools-->NetlistViewers-->RTLViewer,结果如图所示
四、实验总结
FPGA的学习是一个循序渐进的过程。
一开始接触到Qurtusii的时候觉得很困难,尤其是仿真,初次仿真的时候对参数的设置没有清晰的认识。
通过对实验的一步步探究,开始逐渐了解软件的使用方法和技巧,并熟悉了仿真的方法和参数设置。
经过几周的学习,我觉得学习应该脚踏实地,FPGA的学习也一样。
首先要做的是学习软件的使用,然后把课本上的知识应用在软件上,自己动手做一下程序,最好提前安装一下QuartusII,并练习程序编写,这样会对后续的深入学习有很大帮助。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 fpga 十进制 同步 计数器