阿里云怎么做淘宝客网站,医院网站如何备案,app定制开发报价,西安网站建设官网文章目录一、序列检测器二、状态转移图三、序列检测器Verilog HDL程序1、源程序2、测试平台程序四、仿真结果五、总结一、序列检测器
序列检测器的逻辑功能就是将一个指定的比特序列从一串较长的比特流中识别出来。 例如#xff1a;针对一个较长的比特流01001001001111010101…
文章目录一、序列检测器二、状态转移图三、序列检测器Verilog HDL程序1、源程序2、测试平台程序四、仿真结果五、总结一、序列检测器
序列检测器的逻辑功能就是将一个指定的比特序列从一串较长的比特流中识别出来。 例如针对一个较长的比特流010010010011110101010…我们希望能将比特序列为“10010”的序列检测出来并且每次检测到10010就将输出置“1”. 注意如序列”100100100…根据以上的介绍会在第六个比特的时刻输出会置1但是在第9个比特时输出不会被置”1“虽然第4-8比特也构成了”10010“但是却与第一次的”10010“重叠因此不能算作有效检测。 二、状态转移图 设 S0表示初始态代表检测到第一个比特为0即”0“ S1是第二个状态代表检测到第一个比特为1即”1“ S2是第三个状态代表检测到的序列为”10“ S3是第四个状态代表检测到的序列为”100“ S4是第五个状态代表检测到的序列为”1001“ 注意该状态的设定已经化简掉多余状态。 三、序列检测器Verilog HDL程序
1、源程序 代码如下 module SeqDetecter(clk,reset_n,bits,Det_Done);input clk;input reset_n;input bits;output reg Det_Done;parameter S0 5b00001;parameter S1 5b00010;parameter S2 5b00100;parameter S3 5b01000;parameter S4 5b10000;reg [4:0] state;always (posedge clk,negedge reset_n)if(!reset_n) state 5b00001;else begincase(state)S0: if(bits 0) stateS0; else stateS1;S1: if(bits 0) stateS2; else stateS1; S2: if(bits 0) stateS3; else stateS1;S3: if(bits 0) stateS0; else stateS4;S4: if(bits 0) stateS0; else stateS1;default: stateS0;endcaseendalways (posedge clk,negedge reset_n)if(!reset_n)Det_Done0;else begincase(state)S0: Det_Done 1b0;S1: Det_Done 1b0; S2: Det_Done 1b0;S3: Det_Done 1b0;S4: if(bits 0) Det_Done1b1; else Det_Done1b0;default:Det_Done 1b0;endcaseend
endmodule2、测试平台程序
代码如下示例
timescale 1ns / 1nsmodule seq_detecter_tb;reg sclk;reg sreset_n;wire oDet_Done;wire x;reg [23:0]seqs;SeqDetecter inst0(.clk(sclk),.reset_n(sreset_n),.bits(x),.Det_Done(oDet_Done));initial sclk 0;always #10 sclk ~sclk;assign x seqs[23];initial beginsreset_n 1;seqs 23b0; #200;sreset_n 0;#20;sreset_n 1;seqs 20b1100_1001_0000_1001_0100;#1000;$stop;endalways (posedge sclk)seqs {seqs[22:0],seqs[23]};endmodule
该处使用的url网络请求的数据。 四、仿真结果 五、总结
本博文实现了一个简单的基于状态机的序列检测器并给出了仿真结果可以作为Verilog HDL学习中时序电路设计的练习题目。