FPGA课程设计实验报告实验一:设计一个可控的100进制可逆计数器一、实验要求用DE2-115开发板下载。
(1)计数器的时钟输入信号周期为200ns。
(2)以十进制形式显示。
(3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用clr plus minus 功能0 ××复位为01 1 0 递增计数1 0 1 递减计数1 1 1 暂停计数二、关键词可控制、可逆、100进制、复位、暂停、递增、递减三、内容摘要module updown_count(qout,reset,clk,plus,minus);output[7:0] qout;/*定义一个8位的输出,其目的是低四位和高四位分别表示计数器的个位和十位。
*/input clk,plus,minus,reset;//定义四个输入,时钟,加计数,减计数和清零reg[7:0] qout;//qout的数据类型为寄存器型always @(posedge clk)//当clk上升沿到来时执行一遍下列程序beginif(!reset) qout<=0;//当reset为低电平时,计数器执行清零功能,否则跳过elsebegincase({minus,plus})//case语句模块,包含加,减和暂停四个模块2'b10:if (qout[3:0]==0)//判断个位是否为零,若不为零,跳到个位减一beginqout[3:0]<=9;//给个位赋值if(qout[7:4]==0) qout[7:4]<=9;//判断十位是否为零,并且给十位赋值elseqout[7:4]<=qout[7:4]-1;//由于个位赋9,相当于向十位借一,因而十位减一endelseqout[3:0]<=qout[3:0]-1;//个位减一/*这一部分是减计数模块,其思路是:首先判断个位是否为零,若为零,则执行后面的程序,个位直接赋9,并且十位减一;否则个位减一*/ 2'b01:if (qout[3:0]==9)//判断个位是否为9,否则跳到个位加一beginqout[3:0]<=0;//若上面个位为9判断成立,则给个位赋值if(qout[7:4]==9) qout[7:4]<=0;//判断十位是否为9,若为9,则赋0elseqout[7:4]<=qout[7:4]+1;//若十位不为9,十位加一endelseqout[3:0]<=qout[3:0]+1;//个位加一/*这一部分是加计数模块,首先判断个位是否为9,若不为9,个位加1;否侧,再判断十位是否为9,若为9,十位赋0,否侧十位加1。
*/2'b11:qout[7:0]<= qout[7:0];//暂停计数模块endcase/*整个case语句模块,当minus为1plus为0时,执行减计数;minus 为0plus为1时;执行加计数;minus为1plus为1时,暂停。
*/endendendmodule四、建立工程文件(1)指定工程文件名在图二所示窗口中,选择File→New Project Wizard,弹出如图四的对话框,在此对话框中分别输入新建工程所在的文件夹名称(keni100)、工程名称(keni100)和顶层实体名称(keni100)。
QuartusII要求工程文件名与顶层实体名一致。
QuartusII软件界面(2)添加文件和库工程文件夹名、工程名以及顶层实体名设置完后,点击Next按钮,弹出如图四所示的对话框,在此对话框中可以设置添加的文件或者库,按提示操作。
完成后,单击Next按钮,进入目标器件选择对话框。
(3)选择目标器件在图所示的目标器件选择对话框中,在Family下拉列表中选择器件的种类(Cyclone II系列),在target device选项组中选择Specific device selected in “Avaiable devices”list,为用户制定目标器件。
在Show in “Available device”list选项组中,通过限制封装(Package选择FPGA)、引脚数(Pin count选择672)、速度等级(Speed grade选择6)条件,快速查找所需器件,选择型号为EP2C70F672C6的主芯片。
目标器件选择对话框单击Next按钮,进入如图六所示的第三方EDA工具选择对话框。
(4)选择第三方EDA工具在图所示对话框中,依据提示用户可以选择所用的第三方工具如Modelsim、Synplify等。
如不需要第三方工具,则单击Next按钮,进入如图所示的工程创建结束对话框。
(5)工程创建结束在图所示的结束对话框中,查看设置信息是否正确,正确,则单击Next,弹出如图所示窗口,在QuartusII资源管理器中可以看到新建的工程名称。
五、设计输入(原理图法)(1)选择输入文件类型在图所示窗口中,选择Flie→New,弹出如图所示的新建文件类型选择对话框。
在本对话框中有8中设计文件输入方式,分别对应相应的编译器。
本节要介绍的是原理图输入法,选择Verilog HDL File并单击OK按钮,弹出如图所示的图形编辑器对话框。
文件编辑器(2)分析综合选择菜单Processing→start→start analysis&synthesis,弹出QurtusII的分析综合窗口,点击“start”按钮,开始分析综合,在下面的Message窗口会显示各种信息,包括警告和出错信息,如有错,则需要依据错误提示信息返回并修改电路,再次重新分析综合直至无错误提示信息和提示成功。
(3)设置顶级实体单击Files,选择工程文件名counter60.v,单击右键并选中Set as top-level Entity。
六、仿真功能验证建立波形文件,单击工具栏中的图标,弹出如图所示的新建文件对话框。
选择Vector Waveform File并单击OK按钮。
(1)添加引脚节点①在Name下方的空白处双击鼠标左键,弹出如图的Insert Node or Bus对话框,点击该对话框中的Node Finder按钮,弹出的Node Finder对话框。
添加节点或总线对话框②在图中,在Filter下拉列表中选择Pins,其他选项取默认值,单击List按钮,在Node Found中列出设计中的所有引脚,然后点击该图中的按钮,将所有的引脚复制到右侧的Selected Nodes中。
选择输入、输出引脚③点击图中的OK按钮,返回到添加节点的对话框。
该对话框中的Name、Type、Bus width、Start index中的内容变为Multiple Items。
单击OK按钮,繁华波形编辑窗口,此时选中的输入、输出引脚被调价到波形编辑窗口。
添加对话框(2)参数设置在波形编辑前,有两个重要参数需要设置:仿真结束时间、仿真网格大小。
①仿真时间系统默认值为1us,但是在某些电路的仿真在1us内完成不了,因此需要在仿真前事先确定仿真时间,避免仿真时间不够的现象发生。
选择菜单栏Edit→End Time,弹出End Time对话框,在设置波形仿真时间长度为100us。
②选择菜单栏中的Edit→Grid Size,弹出网格大小设置对话框,系统默认的网格大小为10.0ns,需将其该为200ns,否则仿真后的仿真图中输出信号相对输入信号的延时比例偏大。
一半我们将网格大小设置为200ns。
(3)编辑波形在图中选中Name下方的clk,使其变为蓝色高亮状态,然后选择左侧波形编辑工具栏中的按钮,弹出如图的时钟设置对话框,设置时钟信号的周期、相位和占空比。
网格大小在设置参数时已设置为200ns,则时钟周期默认为200ns。
设置完后,单击OK按钮,返回波形编辑窗口。
如图。
时钟设置对话框(4)仿真保存好图好后便可进行仿真。
QuartusII软件的仿真分为功能仿真和时序仿真。
功能仿真是忽略了延时,按逻辑关系仿真,而时序仿真因加入了延时而更贴近实际情况。
QuartusII仿真软件可以仿真整个设计,也可以指定工程中的任何设计实体为顶层设计实体,并仿真顶层实体及其所有其他附属实体。
开始仿真前,必须先生成合适的仿真网表,选择菜单栏中的Processing→Generate Functional Simulation Netlist,生成仿真网表成功时如下图。
此外,建立并指定一个向量源文件为仿真输入向量的源。
Simulator使用向量源文件所包含的输入向量,来仿真同意条件下编辑器件将要产生的输出信号。
功能仿真A::选择菜单栏中的Assignments→Settings,弹出如图的仿真设置窗口,单击Simulator Settings选项后,在右侧的Simulation mode下拉列表中选择Functional,其他按默认设置,单击OK按钮完成设置。
B: 选择Processing→Generate Functional Simulation Netlist,自动创建功能仿真网表,完成后在相应弹出的提示框中,单击“确定”按钮即可。
C: 单击工具栏中的仿真按钮,进行功能仿真,仿真结果如图二十四。
由仿真波形图可以看出,当clr为0时,清零;当plus为0,minus为1时,做减计数;当plus为1,minus为0时,做加计数;当plus为1,minus为1时,保持不变。
验证可逆计数器的逻辑功能正确。
七、封装下载(1)点击file→选择Creat Symbol File for Current File,将可逆计数器进行封装,如图所示:同理将div分频模块和decode4_7是译码模块也进行封装,封闭图分别如图所示:分频模块封装图译码模块封装图(2)封装完毕之后,打开Quartus11.0,打开上面建好的工程。
点击File→New 选择Block Diagram /Schematic File。
双击文本框,将封闭图和元器件导入文本框中,连接好后如图所示:100进制可逆计数器电路原理图(3)修改器件的种类,选择Hierarchy,双击Cyclone II:EP2C70F672C6弹出如图二十九的示的对话框,选择器件的种类(Cyclone IV E系列)限制封装(Package选择FPGA)、引脚数(Pin count选择780)、速度等级(Speed grade 选择7)条件,快速查找所需器件,选择型号为EP4CE115F29C7的主芯片。
器件的种类修改图(4)导入管脚,选择菜单栏中的Assignments→Import Assignments。
弹出如图所示的对话框,选择所要用到的管脚。
相关管脚见后面的附录。