中南大学EDA技术与Verilog hdl实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1: QuartusII基本设计流程体验实验
实验步骤:
1. 启动QuartusII。
2. 创建工程。
(1)选择File->New Project Wizard命令
(2)输入工程库文件夹(注意:不要使用Quartus安装目录,不要使用路径中包含中文的目录,例如桌面等)。输入工程名:MUX41a
(3)跳过“添加文件”步骤。
(4)选择目标芯片(EP3C55F484C8)
(5)跳过“工具设置”步骤,点击“Finish”。
3. 输入设计文件。
(1)选择“File->New”命令,选择Verilog HDL File选项。
(2)在文本编辑器中输入4选一选择器的代码(使用Case语句)。
(3)选择File->Save As命令保存文件。
3. 进行全程编译。编译过程中注意Processing窗口的编译信息。
4. 查看编译报告。
扩展实验与思考:
1.将代码中Case语句修改为if-else语句,比较两者的编译结果(硬件资源使用
情况)。
2.将if-else语句改为不完整条件语句,再次编译后查看编译结果(1.查看综合
报告中的警告信息;2.利用Tools>Netlist Viewers>RTL Viewer查看结构图)。
实验2: ModelSim仿真实验1
实验步骤:
(1)启动Modelsim;
(2)选择File->New->Project建立新工程,工程目录指定为实验1所用目录,加入验证对象文件MUX41a.v;
(3)在Project窗口中选中设计文件,单击鼠标右键,选择Compile->Compile All 编译源代码;如有编译错误,修改源代码;
(4)选择Simulate->Start Simulation或点击Simulate按键,选Library窗口中
work->MUX41a,点击OK。
(5)在Object窗口中选择需要观察的信号,单击鼠标右键,选择Add->To Wave-> Selected Singals,添加待观察信号至波形窗口;
(6)在Transcript窗口中使用force输入激励信号;例如:force A 0
(7)在Transcript窗口输入run命令或点击run按键执行仿真,查看结果.
(8)改变激励信号,执行仿真并查看结果。
扩展实验与思考:
1.将设计文件改为第61页例3-17中的计数器电路,进行仿真,观察波形。其中
时钟信号的激励使用命令:force clk 0 0,1 50 –repeat 100
实验3 ModelSim仿真实验2
1. 实验目的:
学习使用描述语言生产激励信号的方法。
2. 实验步骤:
(1)启动Modelsim;
(2)建立新工程,加入文件:教科书第290页中方法一所设计的三段代码:测试对象addr4.v, 信号发生器signal_gen.v, 仿真测试模块test_adder4.v
(3)编译源代码;如有编译错误,修改源代码;
(4)进入仿真状态,选择仿真模块;
(5)添加待观察信号至波形窗口;
(6)执行仿真,查看结果;
扩展实验:
1.参考第六章6.1,定制计数器模块,并设计测试模块testbench,创建新的
modelsim工程进行仿真测试。
实验4: LED驱动实验
实验步骤:
1. 启动QuartusII建立一个空白工程,保存为led_test.qpf。
2. 将test1\led.v、setup.tcl拷入工程目录。
3. 将led.v加入工程并创建符号文件led.bsf。
4. 建立图形设计文件led_test.bdf,放入led模块,添加输出引脚,并命名为led[7..0],将led输出与输出引脚相连。
5. 参考setup.tcl进行引脚锁定,将未使用的引脚设置为三态输入(必须)。在led_test.bdf中可以察看引脚锁定情况。
6. 将led_test.bdf设置为顶层模块,进行全程编译,察看编译报告。
7. 确保JP6上的LED0-LED7已通过跳线与FPGA引脚相连。
8. 打开电源,将led_test.sof下载至FPGA,观察LED1-LED8的亮灯状态是否与设计吻合。
扩展实验与思考:
1.修改led.v中代码,重新编译下载后,观察LED的状态变化。
实验5:流水灯
实验步骤
1. 启动QuartusII建立一个空白工程,保存为led_water.qpf.
2. 将test2\ledwater.v、int_div.v、setup.tcl拷入工程目录。
3. 将ledwater.v、int_div.v加入工程并创建符号文件led.bsf、int_div.bsf。
4. 建立图形设计文件led_water.bdf,放入ledwater、int_div模块;添加输入输出引脚,将输入引脚命名为clock,将输出引脚命名为led[7..0];将输入引脚clock与int_div的clock输入、int_div的clk_out输入与ledwater的clk输入、ledwater的led输出与输出引脚led相连;设置int_div的分频参数
F_DIV=24000000,F_DIV_WIDTH=25。
5. 参考setup.tcl进行引脚锁定,将未使用的引脚设置为三态输入(必须)。在led_water.bdf中可以察看引脚锁定情况。
6. 将led_water.bdf设置为顶层模块,进行全程编译,察看编译报告。
7. 确保JP6上的LED0-LED7已通过跳线与FPGA引脚相连。
8. 打开电源,将led_water.sof下载至FPGA,观察LED1-LED8的亮灯状态是否与设计吻合。
扩展实验与思考:
1. 修改ledwater.v中代码,重新编译下载后,观察LED的状态变化。
2. ledwater.v中缺少复位信号,为何流水灯能够正常显示?如果需要增加复位信号,如何修改设计?(reset的引脚分配为PIN_B11)。
3. 使用状态机设计流水灯。
实验6:读取按键信号
实验步骤:
1. 启动QuartusII建立一个空白工程,保存为keyled.qpf.
2. 将test3\keyled.v、setup.tcl拷入工程目录。
3. 参考setup.tcl进行引脚锁定,将未使用的引脚设置为三态输入(必须)。
5. 将keyled.v设置为顶层模块,进行全程编译,察看编译报告。
6. 确保JP6上的LED0-LED7已通过跳线与FPGA引脚相连,将JP6的KEY1-KEY8通过跳线与D6的SW1-SW8相连。
7. 打开电源,将keyled.sof下载至FPGA,观察LED1-LED8的亮灯状态,按下KEY1-KEY8的任意一键,观测LED的状态。
扩展实验与思考:
1. 修改keyled.v中寄存器赋值,重新编译下载后,观察LED的状态变化。