北航verilog上机实验报告

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

Verilog上机实验报告

2. 实验总结

本次实验是Verilog上机的第三个实验,由于有了实验二中的经验,所以只需要把实验二中的程序稍加修改即可得到结果。

但是在实验的过程中我依然遇到了一些阻碍。

首先是由于数量级关系没有搞对,使得计数器的位数出了问题。其次是在测试文件中调用了$stop,而自己预设的stop的延迟时间太短,导致输出时钟为低电平(实际上时间还不到一个周期),令自己误以为自己的程序本身有逻辑问题,从而耽误了很多时间。

在看输出波形的长度的时候,可以用modelsim中的cursor功能,用光标来显示波形持续的长度。

17

Verilog上机实验报告

实验四 阻塞赋值与非阻塞赋值的区别

一、 实验目的

1. 通过实验,掌握阻塞赋值与非阻塞赋值的概念和区别;

2. 了解非阻塞和阻塞赋值的不同使用场合;

3. 学习测试模块的编写、综合和不同层次的仿真。

二、 实验内容

在blocking模块中按如下两种写法,仿真与综合的结果会有什么样的变化?作出仿真波形,分析综合结果

(1) always @(posedge clk)

begin c=b; b=a; end

(2) always @(posedge clk) b=a;

always @(posedge clk) c=b;

三、 对任务的理解

通过给定的两段代码理解所谓阻塞赋值与非阻塞赋值的区别。

四、 实现思路

按照给定的代码进行试验,并查看实验结果。

五、 代码

1. 主程序

---------------------------------------文件名 blocking.v--------------------------------------------

module blocking(clk, a,b,c); output [3:0] b,c; input [3:0] a;

18

Verilog上机实验报告

input clk; reg [3:0] b,c;

always @(posedge clk) begin c = b; b = a;

$display(\ end

endmodule

---------------------------------------文件名 blocking_ex.v-------------------------------------------- module blocking_ex(clk, a,b,c); output [3:0] b,c; input [3:0] a; input clk; reg [3:0] b,c;

always @(posedge clk) b = a;

always @(posedge clk) begin c = b;

$display(\ end

endmodule

2. 测试模块

----------------------------------------文件名 div_ex_tb.v----------------------------------- `timescale 1ns/100ps `include\

`include\

module compareTop; wire [3:0] b1,c1,b2,c2; reg [3:0] a; reg clk;

initial begin clk=0;

forever #50 clk=~clk; end

19

Verilog上机实验报告

initial begin a=4'h3;

$display(\ #100 a=4'h7;

$display(\ #100 a=4'hf;

$display(\ #100 a=4'ha;

$display(\ #100 a=4'h2;

$display(\ #100

$display(\ $stop; end

blocking_ex(clk,a,b2,c2);

blocking blocking(clk,a,b1,c1); endmodule

六、 仿真波形

七、 总结及对波形的说明

1. 实验结论

从波形中可以看出这两种写法都相当于例题中的非阻塞赋值。

第一个写法中,先用b对c赋值,再用a对b赋值。相当于先把b的值进行了向下传递,在对b进行改写。因此b的前一个值没有被抹掉,被传递了下来。

第二个写法中,阻塞赋值分别被放在不同的always块总。理论上来说所有的always块都是并行执行的,因此这种写法应当与阻塞赋值是相当的。但是结果中可以看出这种写法却与非阻塞赋值的结果相同。这就说明由于计算机本身的局限性,在仿真的时候,

20

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