verilog状态机格式
2012-08-18 11:07
239 查看
有限状态机就一般而言,有一组输入、一组输出、管理状态间转移的转移函数。
转移函数根据当前状态以及输入值来确定下一个状态,状态机的输出根据当前状态以及输入(摩尔状态机不需要根据输入值,米利机需要)进行输出。
一般的状态机结构图如下所示:
对于摩尔状态机,图中的虚线是不存在的,因为它与输入无关。
D触发器用来存储当前状态,下一个状态则根据输入与当前状态来产生,输入根据当前状态(以及输入,对于米利机而言)来产生。
状态机设计过程:
1。对状态编码:BCD码,GRAY码,one-hot码等;
2。状态存储器的设计:
always@(posedge clk)
begin
if(! reset)
current_state<=init_state;
else
current_state<=next_state;
end
3。状态转移的设计
always@*
case(current_state)
.....
.....
endcase
4。输出逻辑的设计:
always@*
begin
output_init;//首先对每个输出进行初始化(为了避免不必要的锁存器),只有在需要时才对输出进行改变
case(current_state)
.....
.....
endcase
end
将状态机分成3个always块是通常的做法。
转移函数根据当前状态以及输入值来确定下一个状态,状态机的输出根据当前状态以及输入(摩尔状态机不需要根据输入值,米利机需要)进行输出。
一般的状态机结构图如下所示:
对于摩尔状态机,图中的虚线是不存在的,因为它与输入无关。
D触发器用来存储当前状态,下一个状态则根据输入与当前状态来产生,输入根据当前状态(以及输入,对于米利机而言)来产生。
状态机设计过程:
1。对状态编码:BCD码,GRAY码,one-hot码等;
2。状态存储器的设计:
always@(posedge clk)
begin
if(! reset)
current_state<=init_state;
else
current_state<=next_state;
end
3。状态转移的设计
always@*
case(current_state)
.....
.....
endcase
4。输出逻辑的设计:
always@*
begin
output_init;//首先对每个输出进行初始化(为了避免不必要的锁存器),只有在需要时才对输出进行改变
case(current_state)
.....
.....
endcase
end
将状态机分成3个always块是通常的做法。
相关文章推荐
- 10010序列检测器的三段式状态机实现(verilog)
- verilog经典三段式状态机设计实例(morre和mealy)
- Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码
- verilog状态机学习笔记
- Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码
- Verilog文件格式范例
- FPGA Prototyping By Verilog Examples第五章 状态机FSM设计
- 【FPGA】Verilog状态机设计
- 【FPGA】Verilog状态机设计
- 发一个用状态机实现的按键检测是VERILOG代码
- verilog 状态机键盘扫描
- [转]Verilog三段式状态机描述
- verilog读取的二进制与十六进制文件的格式问题
- Verilog三段式状态机描述
- Verilog三段状态机的写法-转载
- verilog状态机实现的简单交通灯
- verilog中状态机的写法
- Verilog 状态机写法
- Verilog三段式状态机描述
- FPGA Prototyping By Verilog Examples第六章 状态机FSMD设计