概述
1.代码实现:有限状态机
一、设计一个“111”的序列检测器,当输入3个或3个以上“1”时,电路输出1,否则输出0
(1)状态转移图方法:
代码实现:
//设计一个“111”的序列检测器,当输入3个或3个以上“1”时,电路输出1,否则输出0
module checker(z,x,clk);
parameter s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;
output z;
input clk,x;
reg [1:0]state,next_state;
reg z;
always@(posedge clk)
case(state)
s0:if (x)
begin
next_state<=s1;
z=0;
end
else
begin
next_state<=s0;
z=0;
end
s1:if (x)
begin
next_state<=s2;
z=0;
end
else
begin
next_state<=s0;
z=0;
end
s2:if (x)
begin
next_state<=s3;
z=1;
end
else
begin
next_state<=s0;
z=0;
end
s3:if (x)
begin
next_state<=s3;
z=1;
end
else
begin
next_state<=s0;
z=0;
end
endcase
always@(posedge clk)
state<=next_state;
endmodule
仿真代码:
`timescale 1ns / 1ps//定义仿真模块的单位时间和精度
//一般将待测试模块的输入设置为reg,输出设置为wire即可
module checker_111_tb();
reg clk;
reg x;
wire z;
//待测试模块例化 ,第一个名称为待测试模块名称,第二个名称符合命名规范随意设置一个名称即可
//输入输出设置按如下形式设置,testbench中名称最好沿用待测试文件中名称,方便编写
checker checker_111_1(
.z(z),
.clk(clk),
.x(x)
);
//起始语句,只执行一次
//#10表示样式十个单位时间(本文一个单位时间设置为1ns)
initial
begin
clk<=0;
x<=0;
#10;
#10 x = 1;
#10 x = 1;
#10 x = 0;
#10 x = 0;
#10 x = 1;
#10 x = 1;
#10 x = 1;
#10 x = 1;
#10 x = 0;
#10 x = 0;
#10 x = 0;
end
//设置时钟
always #5 clk<=~clk;
endmodule
第五章 仿真验证与Testbench编写
一、验证阶段:
1.功能验证
2.综合后验证
3.时序验证
4.板级验证
二、Testbench示例:
//design RTL的module名叫TTF
module Tflipflop_tb; //数据类型声明
reg clk,rst_n,T; //一般输入用reg
wire data_out; //一般输出用wire
TFF U1( //被测模块实例化
.data_out(data_out),
.T(T),
.clk(clk),
.rst(rst)
);
//产生测试激励
always #5 clk<=~clk;
initial
begin
clk = 0;
#3 rst_n = 0;
#5 rst_n = 1;
T = 1;
#30 T=0;
#20 T=1;
end
initial
begin
$monitor($time,"T=%b,clk=%b,data_out=%b",T,clk,rst_n,data_out);
end
endmodule
三、打印文本输出
四、关键字
$ display打印后自动换行,$write输出特定信号后不换行
$ monitor, 当参数列表中的变量或表达式变化时,输出
$ strobe:所有时间处理完后,以10进制格式输出格式化文本
$ strobeb:所有时间处理完后,以2进制格式输出格式化文本
$ strobeo:所有时间处理完后,以8进制格式输出格式化文本
$ strobeh:所有时间处理完后,以16进制格式输出格式化文本
$ finish:结束并跳出程序
$ stop:停止但不跳出程序
$time:得到系统时间
$realtime:得到实数型的时间
例子:
(4)延迟:
串行延时begin end(相对时间)和并行延时fork join(绝对时间)
阻塞赋值(相对时间)和非阻塞赋值(绝对时间)
最后
以上就是自信夕阳为你收集整理的Verilog---项目导向D5---2020/3/22的全部内容,希望文章能够帮你解决Verilog---项目导向D5---2020/3/22所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复