宝应网站开发,微信公众号上漂亮的模板怎么弄,网站建设的评价,网站建设培训学费需求#xff1a;
用两段式状态机设计序列码检测机。这个序列码检测机用于检索连续输入的 1bit 数据
#xff08;每个时钟周期输入 1bit#xff09;#xff0c;当检测到一串“101100”的输入数据时#xff0c;产生一个时钟周期的
高脉冲指示信号
状态图 //实现状态机切…需求
用两段式状态机设计序列码检测机。这个序列码检测机用于检索连续输入的 1bit 数据
每个时钟周期输入 1bit当检测到一串“101100”的输入数据时产生一个时钟周期的
高脉冲指示信号
状态图 //实现状态机切换//101100 //完成切换后输出高脉冲timescale 1ns/1ps
module vlg_design(input i_clk,input i_rest_n,input i_incode,output reg o_vaild);parameter IDLE 4d0;
parameter S1 4d1;
parameter S2 4d2;
parameter S3 4d3;
parameter S4 4d4;
parameter S5 4d5;
parameter S6 4d6; reg [3:0] cstate;
reg [3:0] nstate;always (posedge i_clk) beginif(!i_rest_n) cstate IDLE;else cstate nstate;
endalways (*) begincase(cstate)IDLE:begino_vaild 1d0;if(i_incode 1) nstate S1;else nstate IDLE;endS1:begino_vaild 1d0;if(i_incode 0) nstate S2;else nstate S1;endS2:begino_vaild 1d0;if(i_incode 1) nstate S3;else nstate IDLE;endS3:begino_vaild 1d0;if(i_incode 1) nstate S4;else nstate S2;endS4:begino_vaild 1d0;if(i_incode 0) nstate S5;else nstate S1;endS5:begino_vaild 1d0;if(i_incode 0) nstate S6;else nstate S3;endS6:begino_vaild 1d1;if(i_incode 1) nstate S1;else nstate IDLE;end default :beginnstate IDLE;o_vaild 1d0;endendcase
endendmodule timescale 1ns/1psmodule testbench_top();//参数定义define CLK_PERIORD 20 //时钟周期设置为20ns50MHz //接口申明
reg i_clk;
reg i_rest_n;
reg i_incode;
wire o_vaild;//对被测试的设计进行例化vlg_design uut_vlg_design(.i_clk(i_clk),.i_rest_n(i_rest_n),.i_incode(i_incode),.o_vaild(o_vaild) ); ///initial begini_clk 0;
i_rest_n 0;
#20;
i_rest_n 1;endalways #(CLK_PERIORD/2) i_clk ~i_clk;
integer i;initial begin(posedge i_clk);
(posedge i_rest_n);my_task(6b101100);
my_task(6b101100);my_task(6b111100);
my_task(6b101110);
my_task(6b101100);
repeat(10)(posedge i_clk);#2_000_000;
$stop;
endtask my_task; input [5:0] data; begin for(i0;i 6;i i1) begini_incode data[5-i];(posedge i_clk);endend
endtaskendmodule仿真波形