北航verilog上机实验报告(2)

2018-12-19 23:01

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

Verilog上机实验报告

always @(posedge clk_in) begin

if (!reset)

clk_out=1; //原例题中此处为clk_out=0; else

clk_out=~clk_out; end endmodule

2. 测试模块

----------------------------------------文件名 half_clk_tb.v----------------------------------- `timescale 1ns/100ps `define clk_cycle 50 module top; reg clk,reset; wire clk_out;

always #`clk_cycle clk=~clk; initial begin

clk=0; reset=1; #10 reset=0; #110 reset=1; #100000 $stop; end

half_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out)); endmodule

六、 仿真波形

七、 总结及对波形的说明

1. 实验结论

从波形中可以看出当clk_out的周期为clk_in的两倍,并且在t=300ns时,为clk_out的下降沿,恰好和例题中的输出信号波形反相,满足题目的要求。

9

Verilog上机实验报告

2. 实验思考(课本P318思考题二)

1) 如果没有reset信号,可以通过在测试文件中的initial块中设置clk_in的初值为

1来使输出反相。

2) 只用clk时钟沿的出发可以通过一个计数器来产生其他分频的时钟,并且通过调

节计数器的值来产生不同占空比的分频时钟,其代码如下: i. 产生任意分频的时钟

----------------------------主程序div.v ----------------------------------------- module div(rst,clk,out,num); input rst, clk;

input [3:0] num; //通过num调节分频数 output out; reg out; reg [3:0] i;

always @(posedge clk) begin if(!rst) begin i<=0; out<=0; end else begin

if (i==((num[3:1])-1)) //num[3:1]代替num/2 begin i<=0;

out=~out; end else begin i<=i+1; out=out; end end end

endmodule

----------------------------测试文件div_tb.v ----------------------------------------- `timescale 1ns/100ps `define clk_cycle 50 module t; reg clk,rst; wire out;

reg [3:0] num;

always #`clk_cycle clk=~clk;

10


北航verilog上机实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:法务会计视角下网络股票、期货诈骗证据研究

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: