2021-06-30

期末实验二
一、实验标题:流水线的使用
二、实验目的:
(1)进一步掌握行为级语法。
(2)掌握流水线的设计思想和设计方法。(3)学会使用流水线改进设计。
三、实验涉及语法
(1)第4章行为级建模语法。
(2)第7章可综合模型设计部分流水线的概念。
四、实验内容:Verilog HDL(第二版)数字系统设计及仿真十一章实验5;
五、实验代码:
(1)module tbs51;

reg [7:0] add1,add2;

reg clock;

reg add_cin;

wire [7:0] add_sum;

wire add_cout;

integer seed1=9, seed2=12,seed3=15;

always

begin

add1={KaTeX parse error: Expected 'EOF', got '}' at position 15: random(seed1) }̲%128; add2={random(seed2) }%128;
add_cin={$random (seed3) }/2;
#60;
end
initial clock=0;

always #15 clock=~clock;

add_pp myadd(add1,add2,add_cin,add_sum, add_cout,clock);

endmodule

module add_pp (a,b, cin, sum, cout,clock) ;

input [7:0]a,b;

input cin,clock;

output [7:0]sum;

output cout;

reg c1o;

wire c1;

always @ (posedge clock)
c1o<=c1;

assign {cout,sum[7:4]}=a[7:4]+b[7:4]+c1o;
assign {c1,sum[3:0]}=a[3:0]+b[3:0]+cin;

endmodule

(2)
module mul_pp(mul_a, mul_b, clock, reset_n, mul_out);

input [3:0] mul_a, mul_b;

input clock;

input reset_n;

output [7:0] mul_out;

reg [7:0] mul_out;

reg [7:0] temp_and0;
reg [7:0] temp_and1;
reg [7:0] temp_and2;
reg [7:0] temp_and3;
reg [7:0] temp_add1;
reg [7:0] temp_add2;

always @(posedge clock or negedge reset_n)
begin

if(!reset_n)

begin
mul_out <= 0;
temp_and0 <= 0;
temp_and1 <= 0;
temp_and2 <= 0;
temp_and3 <= 0;
temp_add1 <= 0;
temp_add2 <= 0;
end
else
begin
temp_and0 <= mul_b[0]? {4’b0, mul_a} : 8’b0;
temp_and1 <= mul_b[1]? {3’b0, mul_a, 1’b0} : 8’b0;
temp_and2 <= mul_b[2]? {2’b0, mul_a, 2’b0} : 8’b0;
temp_and3 <= mul_b[3]? {1’b0, mul_a, 3’b0} : 8’b0;
temp_add1 <= temp_and0 + temp_and1;
temp_add2 <= temp_and2 + temp_and3;
mul_out <= temp_add1 + temp_add2;
end
end
endmodule

module tbs52;
reg [3:0] mul_a,mul_b;
reg reset_n,clock;
wire [7:0] mul_out;
integer seed1=9,seed2=12;
always
begin
mul_a= r a n d o m ( s e e d 1 ) ; m u l b = random(seed1); mul_b= random(seed1);mulb=random(seed2);
#30;
end
initial
begin
reset_n=1;clock=0;
#20 reset_n=0;
#10 reset_n=1;
end
always #15 clock=~clock;
mul_pp mymul (mul_a,mul_b,clock,reset_n,mul_out);
endmodule

六、实验步骤:
1、
(1)首先把实验代码发在记事本上,然后打开Modelsim软件,找到File—Project,建立项目;
(2)打开建立的项目,将记事本打开以后将代码复制粘贴在项目里,并在保存之后进行验证代码的正确性;
(3)找到Compile—Compile All,Simulate—Start Simulation
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)点击Optimization Options—Customized visibility—Add
(5)点击Work—tbs51—OK,即可进行运行,进入仿真窗口;
在这里插入图片描述
(6)tbs.51—Add Wave,之后将Wave Default当中的内容全选,点击右键找到clock
在这里插入图片描述
在这里插入图片描述
(7)clock以后,进行数据的改写,之后在点击仿真运行,就可以得到仿真结果了在这里插入图片描述
在这里插入图片描述
2、
(1)首先把实验代码发在记事本上,然后打开Modelsim软件,找到File—Project,建立项目;
在这里插入图片描述
(2)打开建立的项目,将记事本打开以后将代码复制粘贴在项目里,并在保存之后进行验证代码的正确性;
在这里插入图片描述
(3)找到Compile—Compile All,Simulate—Start Simulation;在这里插入图片描述
(4)点击Optimization Options—Customized visibility—Add;
在这里插入图片描述

(5)点击Work—tbs52—OK,即可进行运行,进入仿真窗口;在这里插入图片描述
(6)tbs.52—Add Wave,之后将Wave Default当中的内容全选,点击右键找到clock在这里插入图片描述
在这里插入图片描述
(7)clock以后,进行数据的改写,之后在点击仿真运行,就可以得到仿真结果了
在这里插入图片描述
七、实验视频链接:

(1)【流水线的使用1-哔哩哔哩】https://b23.tv/MTI6K0
(2)【流水线的使用-哔哩哔哩】https://b23.tv/dLEvfX

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值