content:
1. HLSM
2. RTL design
1. HLSM是一种更复杂的FSM因为用普通的combinational logic+ register的模型不好描述了
因此将reguster拆分成两个部分例如下图所示:
其中其实这还是将cnt register还是放在了register的这个process里
...
reg: process(clk)
begin
if(clk='1' and clk'event) then
if(rst='1') then
currstate<=s_off;
cnt<="00";
else
currstate<=nextstate;
cnt<=nextcnt;
end if;
end if;
end process;
...
HLSM可以用两个独立的process来描述,也可以用一个process来描述(关键在程序员哪个更喜欢)
其不同在于更新变量时如果只用一个来描述的话要注意signal的值更新的时间。
2. RTL设计步骤
可以将一个逻辑看作是一个FSM-D模型
设计步骤:
1. 创建HLSM的状态表
2. 将状态表变为电路
- 创建datapath
- 把datapath和controller连起来
- 推导controller的FSM
这里电路的datapath和controller分成了两个单独的部分都有combinational logic和register logic