实验步骤
1.实验目的:
学习独热码状态机、SR锁存器延迟模型和移位除法器模型
2.实验工具:
电脑和 modelsim软件。
3.实验过程:
第一步:打开modelsim软件。
第二步:点击“file-new-project”,建立项目名称为“work”,点击“OK”后,建立一个新的文件为实验的名称,选择“Verilog HDL”,然后关闭。
第三步:将项目编辑代码 。
第四步:保存。
第五步:进行测试
第六步:进行调试。
4.实验代码及结果截图
第一题
module ex8_1(clock,reset,x,y1,y2) ;
input clock,reset;
input x;
output y1,y2;
reg y1,y2;
reg [3:0] cstate,nstate;
parameter s0=4’b0001,s1=4’b0010,
s2=4’b0100,s3=4’b1000;
always @ (posedge clock or posedge reset)
begin
if (reset)
cstate<=s0;
else
cstate<=nstate;
end
always @ (cstate or x)
begin
case (cstate)
s0:begin
if (x0)
nstate=s1;
else
nstate=s3;
end
s1:begin
if (x0)
nstate=s2;
else
nstate=s0;
end
s2:begin
if (x0)
nstate=s3;
else
nstate=s1;
end
s3:begin
if (x0)
nstate=s0;
else
nstate=s2;
end
default : nstate=s0;
endcase
end
always @ (cstate or x)
begin
case (cstate)
s0 : begin
if (x0)
y1=1;
else
y1=0;
end
s1 : begin
if (x0)
y1=0;
else
y1=0;
end
s2 : begin
if (x0)
y1=0;
else
y1=0;
end
s3 : begin
if (x0)
y1=0;
else
y1=1;
end
default :y1=0;
endcase
end
always @ (cstate or x)
begin
if (cstates0 && x0)
y2=1;
else if (cstates3 && x1)
y2=1;
else
y2=0;
end
endmodule
第二题
module my_rs (reset,set,q,qbar);
input reset,set;
output q,qbar;
nor # (1) n1 (q,reset,qbar);
nor # (1) n2 (qbar,set,q);
endmodule
第三题
module div2(clk, reset, start, A, B, D, R, ok, err);
parameter n = 32;
parameter m = 16;
input clk, reset, start;
input [n-1:0] A, B;
output [n+m-1:0] D;
output [n-1:0] R;
output ok, err;
wire invalid, carry, load, run;
div_ctl UCTL(clk, reset, start, invalid, carry, load, run, err, ok);
div_datapath UDATAPATH(clk, reset, A, B, load, run, invalid, carry, D, R);
endmodule
module div_ctl(clk, reset, start, invalid, carry, load, run, err, ok);
parameter n = 32;
parameter m = 16;
parameter STATE_INIT = 3’b001;
parameter STATE_RUN = 3’b010;
parameter STATE_FINISH = 3’b100;
input clk, reset, start, invalid, carry;
output load, run, err, ok;
reg [2:0] current_state, next_state;
reg [5:0] cnt;
reg load, run, err, ok;
always @(posedge clk or negedge reset)
begin
if(!reset) begin
current_state <= STATE_INIT;
cnt <= 0;
end else begin
current_state <= next_state;
6.实验总结
(1)通过本次实验学会如何调试波形图
(2)学会了独热码状态机、SR锁存器延迟模型和移位除法器模型
7.实验视频链接:
【6月11日实验-哔哩哔哩】https://b23.tv/ov6YvG