微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 当状态和计数相关时,状态机应该怎么写?

当状态和计数相关时,状态机应该怎么写?

时间:10-02 整理:3721RD 点击:
目标计数为24位的位宽。
假设初始状态为0,
在状态0时,收到请求,则从0x300开始,每次请求计数减1,
当计到0x200时进入状态2;
计到0x100是进入状态3;
计到0x0是进入状态4。
用VHDL这样描述可否:
process(rst,clk,req)
begin
if(rst = '1') then
cs <= "000";
elsif(posedge(clk)) then
case cs is
when "000" =>
if(req = '1') then-- startup
cntr <= 0x300;
---- and output
cs <= "001";
else
cntr <= 0x000;
cs <= "000";
end if;
when "001" =>
if(req = '1')
cntr <= cntr - 1;
if(cntr = 0x200) then
cs <= "010";
---- and output
else
cs <= "001";
end if;
end if;
when "010" =>
........

状态机的组合逻辑和时序逻辑要分开,最好不要搅和在一块。

同意wangsikao

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top