[试验]10010序列检测器的三段式状态机实现(verilog)
2010-03-06 11:14
806 查看
序列检测器是时序数字电路设计中经典的教学范例,夏宇闻的《verilog数字系统设计教程》一书中有这个例子,用verilog设计一个“10010”序列的检测器。看完后我觉得F和G两个状态多余了,并且刚学了三段式状态机的写法,所以改写了这个程序,代码如下:
做仿真时没有写testbench,直接用Quartus II 8.1里的仿真工具进行了功能仿真,波形如下:
试验结果表明改写三段式状态机成功。
module seqdet(nrst,clk,x,z); input nrst,clk; input x; output z; reg z; reg [4:0]CS,NS; parameter [4:0] IDLE=5'b00000, A=5'b00001, B=5'b00010, C=5'b00100, D=5'b01000, E=5'b10000; always @(posedge clk or negedge nrst) begin if(!nrst) CS <= IDLE; else CS <= NS; end always @(nrst or CS or x) begin NS = 5'bx; case(CS) IDLE: begin if(x==1) NS=A; else NS=IDLE; end A:begin if(x==0) NS=B; else NS=A;end B:begin if(x==0) NS=C; else NS=A;end C:begin if(x==1) NS=D; else NS=IDLE;end D:begin if(x==0) NS=E; else NS=A;end E:begin if(x==0) NS=C; else NS=A;end default: NS=IDLE; endcase end always @(posedge clk or negedge nrst) begin if (!nrst) z<=1'b0; else begin z<=1'b0; case(NS) IDLE,A,B,C,D: z<=0; E:z<=1; default:z<=0; endcase end end endmodule
做仿真时没有写testbench,直接用Quartus II 8.1里的仿真工具进行了功能仿真,波形如下:
试验结果表明改写三段式状态机成功。
相关文章推荐
- 10010序列检测器的三段式状态机实现(verilog)
- 10010序列检测器的verilog实现
- 状态机的应用之序列检测器的实现与仿真
- 第一次verilog实验——序列检测器的实现
- 三段式序列检测器的实现
- 状态机(二):Verilog状态机实现
- 比较好的三段式状态机verilog范例
- m序列的verilog实现
- Verilog三段式状态机描述
- 用verilog实现m序列生成
- 发一个用状态机实现的按键检测是VERILOG代码
- m序列Simulink仿真Verilog实现
- verilog状态机实现的简单交通灯
- 6-1 Verilog Mealy状态机之序列检测器
- verilog 有限状态机的小小实例演示及仿真——序列检测器
- Verilog序列检测器-两例
- Verilog实现m序列发生器
- Verilog的序列信号检测器实现及其testbench仿真
- 一次输出8bit_n4_m序列Simulink仿真Verilog实现
- Verilog三段式状态机描述