1、硬件描述语言 实验指导书南通大学电子信息学院2008 年 2 月1、目的和任务 硬件描述语言是一门侧重于数字电子系统的设计和测试方法的课程,它的上机实验是教学中的一个重要环节。 通过上机学习, 学生不仅可以系统地复习、巩固该课程的基本理论,而且培养学生解决问题能力和创新能力,同时为该课程的课程设计作准备。 2、教学基本要求 (1) 、熟练使用 EDA 软件(Quartus II 、ModelSim) ; (2) 、掌握用 Verilog HDL 实现组合逻辑电路和时序逻辑电路的方法。 3、实验条件 (1) 、PC 机、Quartus 软件和 ModelSim 软件 (2) 、GW48 型 ED
2、A 实验开发系统(EP1K30TC144-3) 4、实验内容 序号 实验内容 1 实验一 设计工具的使用 2 实验二 组合逻辑电路设计(一) 3 实验三 组合逻辑电路设计(二) 4 实验四 总线与总线操作 5 实验五 时序逻辑电路设计(一) 6 实验六 时序逻辑电路设计(二) 5、实验成绩 实验成绩的评定由实验的验收等级和实验报告等级两个部分组成,各占50%。实验的验收等级和实验报告等级均采用 5 个等级,即优、良、中、及格和不及格。实验成绩占本课程平时成绩的 50%。实验一 设计工具的使用1、实验目的与要求 掌握在 Quartus 开发环境下,运用硬件描述语言输入法对“三人表决器”进行设计输
3、入、编译、调试和仿真的方法。“三人表决器”电路的输入为 SW1、SW2 和 SW3,输出为 L3 和 L4,位宽均为 1 位。当 SW1、SW2 和 SW3 中有超过 2 个以上的输入为 1 时,要求熟悉整个设计流程,从打开、建立文档、编辑、编译、建立激励信号波形及最后仿真的整个过程。 2、实验内容 (1) 在 Quartus 开发环境下,建立工程,并将三人表决器的硬件描述语言程序输入; (2) 完成编译、调试和仿真,分析实验仿真结果,并判断其正确性。 3、教学形式 (1) 本实验为验证型实验,学生在实验前预习实验指导书; (2) 指导教师应该在实验前阐述实验目的、内容、方法和步骤,并且就实验
4、中的难点和注意事项进行一定的说明; (3) 实验结束之后,学生按照实验报告的书写格式自行完成实验报告。 4、应达到的实验能力标准 (1) 能熟练地在 Quartus 开发环境下,建立工程,并将三人表决器的硬件描述语言程序输入; (2) 能熟练地进行编译和调试,排除编译后的错误; (3) 正确地在仿真之前进行功能仿真的设置,并熟练地完成功能仿真; (4) 掌握基于 ACEX1K 系列 EP1K30TC144-3 器件的时序仿真方法。 5、思考题 (1) 用 Quartus II 软件对设计电路进行的仿真包括哪两种类型,它们之间有什么区别? (2) 硬件描述语言输入法进行设计时的基本操作流程包括哪
5、些环节? 实验二 组合逻辑电路的设计(1)1、实验目的与要求 掌握在 Quartus 开发环境下,运用 Verilog 硬件描述语言输入法对 8 选 1 多路选择器进行编译、调试和仿真的方法。要求根据使能端 en1:0的不同组合,从 8 个输入 a、b、c、d、e、f 、g、h 中选择 1 个输出,输出 out 的位宽为 1 位。并分别采用 case 语句和 if-else 语句设计 8 选 1 多路选择器。 2、实验内容 (1) 在 Quartus 开发环境下,建立工程,并将 8 选 1 多路选择器的硬件描述语言程序输入; (2) 完成编译、调试和仿真,分析实验仿真结果,判断其正确性。 3、
6、教学形式 (1) 本实验为设计型实验,学生在实验前预习实验指导书; (2) 指导教师应该在实验前阐述实验目的、内容、方法和步骤,并且就实验中的难点和注意事项进行一定的说明; (3) 实验结束之后,学生按照实验报告的书写格式自行完成实验报告。 4、应达到的实验能力标准 (1) 能熟练地在 Quartus 开发环境下,建立工程,并将 8 选 1 多路选择器的硬件描述语言程序输入; (2) 能熟练地进行编译和调试,排除编译后的错误; (3) 正确地在仿真之前进行功能仿真的设置,并熟练地完成功能仿真; (4) 掌握基于 ACEX1K 系列 EP1K30TC144-3 器件的时序仿真方法。 5、思考题
7、(1) 采用 case 语句和 if-else 语句分别设计的八选一多路选择器之间有什么区别? (2) 如果要求不采用 always 语句, 而采用 assign 语句设计该组合逻辑电路,该如何设计? 实验三 组合逻辑电路的设计(2)1、实验目的与要求 掌握在 Quartus 开发环境下,运用硬件描述语言输入法对 8 线-3 线优先编码器 74148 电路进行编译、调试和仿真的方法。 要求分别用 case 语句和if-else 语句设计 8 线-3 线优先编码器 74148。 电路的输入为 ei、i0、i1、i2 、i3、i4、i5、i6、i7,输出为 a2、 a1、a0、gs、eo。优先编码
8、器 74148 的功能表如下: 2、实验内容 (1) 在 Quartus 开发环境下, 建立工程, 并将 8 线-3 线优先编码器 74148 电路的硬件描述语言程序输入; (2) 完成编译、调试和仿真,分析实验仿真结果,判断其正确性。 3、教学形式 (1) 本实验为设计型实验,学生在实验前预习实验指导书; (2) 指导教师应该在实验前阐述实验目的、内容、方法和步骤,并且就实验中的难点和注意事项进行一定的说明; (3) 实验结束之后,学生按照实验报告的书写格式自行完成实验报告。 4、应达到的实验能力标准 (1) 能熟练地在 Quartus 开发环境下,建立工程,并将 8 线-3 线优先编码器
9、74148 电路的 Verilog HDL 程序输入; (2) 能熟练地进行编译和调试,排除编译后的错误; (3) 正确地在仿真之前进行功能仿真的设置,并熟练地完成功能仿真和时序仿真。 5、思考题 (1) 如果要求不采用 always 语句,而采用 assign 语句设计该组合逻辑电路,该如何设计? (2) 如果要求设计译码器 74138,该如何设计? 实验四 总线与总线操作1、实验目的与要求 掌握总线与总线操作的工作原理,以及运用 Verilog HDL 进行设计、编译、调试和仿真的方法。要求设计一个挂在总线上的 32 位数据寄存器,片选信号 ce(高电平有效) ,读信号 rd(高电平有效)
10、 ,写 we 信号(高电平有效) 。 2、实验内容 (1) 选择两种方案,分别进行 Verilog HDL 设计; (2) 在 Quartus 开发环境下,建立工程,并将设计实现的硬件描述语言程序输入; (3) 完成编译、调试和仿真,分析实验仿真结果,判断其正确性。 3、教学形式 (1) 本实验为设计型实验,学生应该在实验之前预习实验指导书; (2) 指导教师应该在实验前阐述实验目的、内容、方法和步骤,并且就实验的难点和注意事项进行一定的说明; (3) 实验进行中学生完成所有的实验步骤,并对实验结果进行分析; (4) 实验结束之后,学生按照实验报告的书写格式自行完成实验报告。 4、应达到的实验
11、能力标准 (1) 掌握总线与总线操作的工作原理,掌握 inout 类型的定义和使用方法; (2) 能熟练地在 Quartus 开发环境下,建立工程,并将一个挂在总线上的 32 位数据寄存器的硬件描述语言程序输入; (3) 能熟练地进行编译和调试,排除编译后的错误; (4) 正确地在仿真之前进行功能仿真的设置,并熟练地完成功能仿真和时序仿真。 5、思考题 (1) 如果要设计一个挂在总线上的 16 位数据寄存器,片选信号为 ce(高电平有效) 读信号为 rd(低电平有效) ,写信号为 wt(低电平有效),那么应该如何设计? 实验五 时序逻辑电路的设计(1)计数器/分频器电路的设计1、实验目的与要求
12、 掌握在 Quartus 开发环境下,运用硬件描述语言设计计数器/ 分频器电路,以及进行编译、调试和仿真的方法。 要求设计一个 4 位 2 进制 BCD 码加一计数器电路/占空比接近 50%的 27 分频器电路) 。计数器电路端口为:异步清零输入端口 rst,输入时钟 clk,输出端口 q3:0。分频器电路端口为:异步清零输入端口 rst,输入时钟 clk_in,输出时钟 clk_out。并分别采用两种以上的方法实现。 2、实验内容 (1) 在 Quartus 开发环境下,建立工程,并将计数器/ 分频器电路的硬件描述语言程序输入; (2) 完成编译、调试和仿真,分析实验仿真结果,判断其正确性。
13、 3、教学形式 (1) 本实验为设计型实验,学生在实验前预习实验指导书; (2) 指导教师应该在实验前阐述实验目的、内容、方法和步骤,并且就实验中的难点和注意事项进行一定的说明; (3) 实验结束之后,学生按照实验报告的书写格式自行完成实验报告。 4、应达到的实验能力标准 (1) 能熟练地在 Quartus 开发环境下,建立工程,并将计数器/ 分频器电路的 Verilog HDL 程序输入; (2) 能熟练地进行编译和调试,排除编译后的错误; (3) 正确地在仿真之前进行功能仿真的设置,并熟练地完成功能仿真和时序仿真。 5、思考题 (1) 如果要求设计的是一个 31 进制计数器,且占空比不作特
14、别要求,那么该设计有哪些方法可以实现? 实验六 时序逻辑电路的设计(2)移位寄存器/序列检测器电路的设计1、实验目的与要求 掌握在 Quartus 开发环境下, 运用硬件描述语言设计移位寄存器/ 序列检测器电路,以及进行编译、调试和仿真的方法。 要求设计一个具有置位、复位、左移和右移功能的八位移位寄存器/“10100101 ”序列检测器。移位寄存器电路端口为:异步清零输入端口 rst,输入时钟 clk,置数判断输入端口 load,移位类型判断输入端口 m,数据输入端口 data7:0,输出端口 q7:0。序列检测器电路端口为:异步清零输入端口 rst,输入时钟 clk,串行数据输入端口d,输出
15、标志端口 s。并分别采用两种以上的方法实现移位寄存器 /序列检测器电路的设计。 2、实验内容 (1) 在 Quartus 开发环境下,建立工程,并将移位寄存器/ 序列检测器电路的硬件描述语言程序输入; (2) 完成编译、调试和仿真,分析实验仿真结果,判断其正确性。 3、教学形式 (1) 本实验为设计型实验,学生在实验前预习实验指导书; (2) 指导教师应该在实验前阐述实验目的、内容、方法和步骤,并且就实验中的难点和注意事项进行一定的说明; (3) 实验结束之后,学生按照实验报告的书写格式自行完成实验报告。 4、应达到的实验能力标准 (1) 能熟练地在 Quartus 开发环境下,建立工程,并将
16、移位寄存器/ 序列检测器电路的 Verilog HDL 程序输入; (2) 能熟练地进行编译和调试,排除编译后的错误; (3) 正确地在仿真之前进行功能仿真的设置,并熟练地完成功能仿真和时序仿真。 8 硬件描述语言实验指导书 5、思考题 (1) 如果要求设计的是一个并行输入、串行输出的数据转换器,那么该如何设计?如果要求设计的是一个串行输入、并行输出的数据转换器,那么该如何设计? (2) 如果要求设计的是一个“1111101000011”序列检测器,那么该如何设计?附录: Quartus II 的开发流程一个简单的三人表决器的 Verilog HDL 设计功能描述:三个人分别用拨位开关 SW1
17、、SW2、SW3 来表示自己的意愿,如果对某决议同意,各人就把自己的拨位开关拨到高电平,不同意就把自己的拨位开关拨到低电平。表决结果用 LED(高电平亮)显示,如果决议通过那么实验板上 L3 灯亮;如果不通过那么实验板上 L3 灯不亮;如果对某个决议有任意二到三人同意,那么此决议通过,L3 亮;如果对某个决议只有一个人或没人同意,那么此决议不通过,L3 灯不亮。 用 Verilog HDL 设计“三人表决器 ”双击 Quartus4. 2 图标,启动 Quartus4. 2,并新建工程将弹出下图窗口,选择 Project 的目录选择好目录后打相关文件名,我们用系统默认的,如下图 建立建的 Ve
18、rilog-HDL 文件 选择 Verilog HDL File 在弹出的文本窗体中输入下面语句 /三人表决器 majority_voter.v module MAJORITY_VOTER(SW1,SW2,SW3,L3,L4); output L3,L4; wire L3,L4; input SW1,SW2,SW3; assign L3=(SW1 assign L4=!L3; endmodule 保存 Verilog HDL 文件,点击保存文件按钮或 File-Save,(注:该工程中只有一个文件,我们是把这个文件作为顶层文件,该文件的文件名必须和工程名相同,并且文件中模块名必须和该文件的文件
19、名相同) 指定芯片如图,选择 EPM7128SLC84-15,点击 OK 编译项目如果没有错误将弹出: 编译后的信息显示了芯片资源的利用率等详细信息,如下图右边框中显示: 指定管脚将弹出下面的窗口,我们在 To 处选择所要指定的管脚(如 L3) ,然后在 Location 处选择或直接输入芯片的管脚(直接输入只需要数字,如 41) 我们再编译一次,使管脚定义信息加入相关文件 波形仿真加入波形:在波形窗口中点击右键,选择 Insert Node or Bus 将会弹出下图窗口,点击 Node Finder 点 List 保存文件 MAJORITY_VOTER 为了方便观察波形,我们现在设置格点尺
20、寸和结束时间,可以在 Edit 下面的 End Time 和Gride Size 中设置,我们设置 Gride Size 为 30ns,End Time 为 1us(其中 Gride Size 不要设太小,否则以后可能会出现信号的延迟大于信号的有效时间,而使仿真结果感觉到好像不正确) 。我们可以再次保存一下波形文件点击波形仿真按钮,也可以在 Tools-Simulation Tools ,联后按 START 按钮 波形仿真如果无错误,将出现下面的窗口 下载验证首先,检查硬件是否连接正确无误。 1. 将手接触自来水管等接地装置,或用自来水冲洗并擦干,防止静电影响 2. 将配套的螺丝安装到实验板的
21、四个支柱孔上,将实验板放到绝缘物体上(下面千万不要放钥匙、螺丝刀等物体) 3. 将配套的 25 芯并口延长线公端和电脑相连,母端和实验板相连 4. 将配套电源一端和实验板电源接口相连,另一端和 220V 市电相连 5. 打开电源开关(如果要取下并口线,请先关闭电源,防止产生瞬时电流对你并口产生影响) 6. 在实验系统上选择好模式,下面就可以下载验证了。 (你在下载程序进行长时间运行时,请注意芯片温度,避免因为一些失误而造成芯片损坏,如果温度很高,请及时检查原因)接着,点 Programmer 或选择 Tools-Programmer 在下面窗口中点击 Add Hardware 此时系列会识别并口和下载电缆,如下图(注:对系统而言 Byteblaster 和 ByteblasterMV 都认为 ByteblasterMV) 我们将看到蓝色跳不断充满,当显示 100时下载成功。 通过测试,设计的表决器功能完全正确