北航verilog上机实验报告

发布时间 : 星期日 文章北航verilog上机实验报告更新完毕开始阅读

Verilog上机实验报告

实验一 简单的组合逻辑设计

一、 实验目的

1.

2. 3. 4.

掌握基本组合逻辑电路的实现方法;

初步了解两种基本组合逻辑电路的生成方法; 学习测试模块的编写;

通过综合和布局布线了解不同层次仿真的物理意义。

二、 实验内容

设计一个字节(8位)的比较器。

要求:比较两个字节的大小,如a[7:0]大于b[7:0],则输出高电平,否则输出低电平;并改写测试模型,使其能进行比较全面的测试。观察RTL级仿真、综合后门级仿真和布局布线后仿真有什么不同,并说明这些不同的原因。从文件系统中查阅自动生成的compare.vm,compare.vo文件和compare.v作比较,说出它们的不同点和相同点。

三、 对任务的理解

本题就是一个很简单的比较电路。对两个8位的输入数据的大小进行比较,并且输出比较结果

四、 实现思路

1. 首先这个比较器应当有3个对外的端口,分别是:两个8位数据的输入端口,

一个比较结果的输出端口。

2. 由于比较器的输出结果是随着输入变化立即变化的,因此这是一个组合逻辑的

电路。主程序很容易实现。

3. 测试模块要产生随机的两个8位输入数据,因此利用系统任务$random来实现。

通过一个时钟,每隔一段时间产生两个新的随机数。

5

Verilog上机实验报告

五、 代码

1. 主程序

---------------------------------------文件名 compare_8bit.v--------------------------------------------

module compare_8bit(a,b,re); input [7:0] a,b; output re; reg re;

always @(a or b) //if the input changes, the output changes immediately. if (a>b) re=1; else re=0; endmodule

2. 测试模块

----------------------------------------文件名 compare_8bit_tb.v----------------------------------- `timescale 1ns/1ns module t;

reg [7:0] a,b; reg clk; wire re; initial begin a=0; b=0; clk=0; end

always #50 clk=~clk; always @(posedge clk) begin

a={$random}8; b=($random)8; end initial

begin #100000 $stop; end

compare_8bit m(.a(a),.b(b),.re(re)); endmodule

6

Verilog上机实验报告

六、 仿真波形

七、 总结及对波形的说明

1. 实验结论

从波形中可以看出当a>b时,re=1;当a

2. 实验思考(课本P316思考题一)

1) 在测试方法二中,第二个initial块用于设置仿真时长。

2) 它与第一个initial块是一个并行的关系,同一个测试文件中,可以有多个initial

块,且均从0时开始顺序运行,并且仅运行一次。

3) 如果在第二个initial块中,没有写#100000或者$stop,仿真将会按测试界面设

置的仿真时间进行仿真。(如下图)

4) 第二种测试方法更全面,因为第二种测试方法产生的a和b的值是随机的,可以测试多种情况,而第一种测试方法只能按照测试文件中给定的数据进行测试,不具有普遍性。

3. 实验总结

本次实验是Verilog上机的第一个实验,内容比较简单,并且课本上已经给出了范例,只需要稍加修改便可以写出程序的代码。

在本次试验中,由于实验软件的限制,我仅仅进行了RTL级的仿真,如果要进行综合后门级仿真和布局布线后仿真,可以通过其他软件来进行。

RTL级仿真、综合后门级仿真和布局布线后仿真的不同之处在于所在的层次不同。依次更加底层化。而compare.vm,compare.vo文件和compare.v文件的描述也是不同层次的描述。

7

Verilog上机实验报告

实验二 简单分频时序逻辑电路的设计

一、 实验目的

1. 掌握最基本时序电路的实现方法;

2. 学习时序电路测试模块的编写; 3. 学习综合和不同层次的仿真。

二、 实验内容

已然制作clk_in的2分频clk_out,要求输出时钟的相位与上面的2分频器的输出相位正好相反。编写测试模块,给出仿真波形。改变输入始终的频率,观察RTL级仿真、综合后门级仿真和布线后仿真的不同,并写出报告

三、 对任务的理解

本题的实验就是要实现一个分频器。

四、 实现思路

1. 首先这个比较器应当有3个对外的端口,分别是:输入时钟信号clk_in,输出时

钟信号clk_out,复位信号reset。

2. 由于输入信号中有时钟信号,并且输出是随着输入时钟的某个沿的出现而变化

的,因此是一个时序逻辑电路。

3. 题目中要求输出的2分频时钟信号与例题中的相位相反。最简单的想法就是将

复位信号有效时的输出信号反相。

五、 代码

1. 主程序

---------------------------------------文件名 half_clk.v--------------------------------------------

module half_clk(reset,clk_in,clk_out); input reset, clk_in; output clk_out; reg clk_out;

8

联系合同范文客服:xxxxx#qq.com(#替换为@)