《硬件描述语言与FPGA技术》
实验指导书
西北工业大学
2012/10/10
目录
实验一 简单的组合逻辑设计 ....................................................................................................... 3 实验二 简单分频时序逻辑电路的设计 ....................................................................................... 6 实验三 利用条件语句实现计数分频时序电路 ............................................................................. 9 实验四 阻塞赋值与非阻塞赋值的区别 ....................................................................................... 12 实验五 用always块实现较复杂的组合逻辑电路 ...................................................................... 16 实验六 在Verilog中使用函数 ..................................................................................................... 20 实验七 在Verilog HDL中使用任务(task) ............................................................................. 23 实验八 利用有限状态机进行时序逻辑的设计 ......................................................................... 27 实验九 利用状态机实现比较复杂的接口设计 ........................................................................... 32 练习十 利用SRAM设计一个FIFO ............................................................................................. 39
2
实验一 简单的组合逻辑设计
一、实验目的
1. 学习Quartus和ModSim两种EDA工具的使用方法; 2.掌握基本组合逻辑电路的实现方法; 3.初步了解两种基本组合逻辑电路的生成方法; 4.学习测试模块的编写;
5.通过综合和布局布线了解不同层次仿真的物理意义。
二、实验内容
本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。
三、实验仪器、设备
预装了开发工具ModelSimSE、synplify的PC机。
四、实验原理
1. 组合逻辑电路是指在任何时刻,输出状态只决定于同一时刻各输入状态的组合而与
电路以前状态无关,而与其他时间的状态无关。其逻辑函数如下:
Li=f(A1,A2,A3??An) (i=1,2,3?m) 其中,A1~An为输入变量,Li为输出变量。
2. 组合逻辑电路的特点归纳如下:
① 输入、输出之间没有返馈延迟通道; ② 电路中无记忆单元。
3. 组合逻辑设计示例:可综合的数据比较器。它的功能是比较数据a与数据b,如果
两个数据相同,则给出结果1,否则给出结果0。描述组合逻辑时常使用assign结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。
模块源代码:
//--------------- compare.v ----------------- module compare(equal,a,b);
3
input a,b; output equal;
assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时, //equal输出为0。 endmodule
测试模块源代码:
`timescale 1ns/1ns `include \ module comparetest;
reg a,b; wire equal; initial begin a=0; b=0;
#100 a=0; b=1; #100 a=1; b=1; #100 a=1; b=0; #100 $stop; end
compare compare1(.equal(equal),.a(a),.b(b)); endmodule
仿真波形如下:
五、实验步骤
1. 建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的
测试;
4
相关推荐: