实验一-十进制计数器的设计(共6页).doc
精选优质文档-倾情为你奉上实验一 十进制计数器的设计姓名:庞啟明 学号: 专业:自动化一、 实验目的熟悉Quartus的Verilog HDL文本设计流程全过程,学习计数器的设计、仿真和硬件测试。二、 实验原理该程序设计是带有异步复位、同步计数使能、可预置型功能全面的十进制计数器。(1) 第一个条件句if(!RST)构成的RST接于寄存器下方的异步清0端CLR。(2) 第二个条件句if(EN)构成EN接于寄存器左侧的使能端ENA。(3) 第三个条件句if(LODA)构成LODA接于上面的多路选择器,使之控制选择来自DATA的数据,还是来自另一多路选择器的数据。(4) 不完整的条件语句与语句Q1<=Q1+1构成了加1加法器和4位寄存器。(5) 语句(Q1<9)构成了小于比较器,比较器的输出信号控制左侧多路选择器。(6) 第二个过程语句构成了纯组合电路模块,即一个等式比较器,作进位输出。三、 实验设备与软件平台实验设备:计算机、FPGA硬件平台是Cyclone系列FPGA软件平台:Quartus II 9.1 (32-Bit)、5E+系统四、实验内容编写Verilog程序描述一个电路,实现以下功能:设计带有异步复位、同步计数使能和可预置型的十进制计数器。具有5个输入端口(CLK、RST、EN、LOAD、DATA)。CLK输入时钟信号;RST起异步复位作用,RST=0,复位;EN是时钟使能,EN=1,允许加载或计数;LOAD是数据加载控制,LOAD=0,向内部寄存器加载数据;DATA是4位并行加载的数据。有两个输出端口(DOUT和COUT)。DOUT的位宽为4,输出计数值,从0到9;COUT是输出进位标志,位宽为1,每当DOUT为9时输出一个高电平脉冲。五、 实验步骤 设计程序:module CNT10 (CLK,RST,EN,LOAD,COUT,DOUT,DATA); input CLK; input EN; input RST; input LOAD; input 3:0 DATA; output 3:0 DOUT; output COUT; reg 3:0 Q1 ; reg COUT ; assign DOUT = Q1; always (posedge CLK or negedge RST) begin if (!RST) Q1 <= 0; else if (EN) begin if (!LOAD) Q1 <= DATA; else if (Q1<9) Q1 <= Q1+1; else Q1 <= 4'b0000; end end always (Q1) if (Q1=4'h9) COUT = 1'b1; else COUT = 1'b0; Endmodule 设计流程:1编辑和输入设计文件(1)、新建一个文件夹如D:CNT10 ,本工程所有文件将存放在此目录中。1)输入VHDL源程序打开QuartusII,选择菜单File->New。选择Verilog HDL File,输入源程序。2)文件存盘选择File->Save As命令,找到已设立的文件夹D:CNT10,存盘文件名应与实体名一致,存盘为CNT10.v。当出现语句“do you want to create.”的对话框,选择“是”自动创建工程。这里先选择“否”,即暂时不创建工程流程。下一步手动创建工程。(2)、创建工程1)选择菜单File->New project Wizard命令,即弹出工程设置对话框。单击此对话框右侧的“”进行设置,第一行的D:CNT10表示工程所在的工作库文件夹,第二行的CNT10表示此项工程的工程名,第三行是当前工程顶层文件的实体名。2)将设计文件CNT10.v添加入工程中。点“”按钮,在弹出的对话框中选择CNT10.v文件。单击“Add”按钮。3)选择目标芯片器件选择Cyclone系列中的EP1C6Q240C8。也可以从主菜单Assignments的下拉菜单中点击 Device目标芯片设置窗口。4)工具设置,此处不进行设置,点击Next5)结束设置列出了此工程相关设置情况,点击Finish按钮,出现project nevigator窗口,显示本工程项目的层次结构和各层次的实体名。全程综合与编译选择Processing->start compilation,等待一段时间,跳出对话框提示编译成功或有错误,并在信息栏显示错误信息。仿真测试1)打开波形编辑器选择File->new,选择vector waveform file。2)设定仿真时间区域在Edit->end time,在弹出的窗口time栏处输入50,单位选“us”。3)波形文件存盘,默认文件名为CNT10.vwf4)将此工程CNT10的端口信号名选入波形编辑器中View->utility windows项的Node Finder选项。点击“list”。5)将端口信号名拖入波形编辑器中,拖完信号后可以关掉浮动窗口6)按键盘上“CTRL+W”,显示全部仿真时间区域。7)编辑输入波形(输入激励信号)8) 仿真器参数设置 9)启动仿真器。提示是否保存,选择“是”,仿真成功后选“确定”。10) 观察仿真结果 按键盘上“CTRL+W”,在全部仿真时间区域内观察波形,并分析波形图显示的逻辑功能是否正确 引脚锁定与硬件测试打开CNT10命名的工程,应选择File的Open Project命令。选择Assignments->assingnment editor项。Category栏中选择locations,然后双击TO栏的new,选择Node Finder。在出现的对话框左边框中选择需要锁定的端口信号名,这些信号跳到右栏,单击OK按键后,这些信号名即进入信号编辑栏。接着在表框中分别键入需要锁定的端口引脚名。锁定引脚后,必须重新编译,启动Processing->Start Ccomplication,编译完成后可下载配置文件。 使用USB编程器下载配置文件 首先安装USB编程器的驱动程序。选择自己搜索驱动程序。备注:若没有正确安装驱动程序,USB Blaster 编程器不可选,这时必须到硬件设备管理器中删除打问号的USB驱动程序,重新正确安装。 配置文件下载 将编译产生的SOF格式配置文件配置进FPGA中。在MODE选择JTAG。编程器选择USB Blaster下载方式。 点击“start”将配置文件下载,然后进行硬件测试。 功能仿真截图:仿真波形图管脚锁定截图六、 实验结果及分析(1) RST在任意时刻有效时,如CLK非上升沿时,计数也能即刻清0。(2) 当EN=1,且在时钟CLK的上升沿时刻LODA=0时,4位输入数据DATA=7被加载,在LOAD=1后作为计数器的计数初值,如图所示计数从4加载到7的时序。计数到9时,COUT输出进位1。当下一轮计数到2时,尽管出现了加载信号LODA=0,但不加载。(3)当EN=1,RST=1,LODA=1时,计数正常进行,在计数数据等于9时进位输出高电平。当计数从7计到8时有一毛刺信号。七、 心得体会 第一次做EDA实验,使用Quartus II感觉很吃力,因为以前都没有接触过电子设计之类的东西。虽然没有电子基础但还是硬着头皮慢慢去摸索。经过老师的详细讲解和耐心指导以及同学们的探讨学习,使我对EDA和Quartus II的使用有了一定的了解。十进制计数器的设计使用Quartus II的时候要注意程序的准确输入才能够顺利通过综合与编译,才能够继续进行接下来的仿真和下载、测试。专心-专注-专业