【新人求助】关于有限状态机

[复制链接]
1245|7
 楼主| essunny310 发表于 2017-2-8 21:05 | 显示全部楼层 |阅读模式
刚开始学习FPGA,看到老师写的VHDL代码里写状态机的时候并没有给状态编码,我用RTL观察发现quartus给了一个States Machine,点开看里面有状态跳转图,我想问的是如果不给状态编码,quartus会自动选择一种编码方式吗?如果是这样又怎么处理无关态呢?
 楼主| essunny310 发表于 2017-2-9 14:50 | 显示全部楼层
自顶一下~
waiter 发表于 2017-2-9 16:23 | 显示全部楼层
会选择一种编码方式,比如自然码、独热码等。综合报告中可以看到的
 楼主| essunny310 发表于 2017-2-9 16:42 | 显示全部楼层
waiter 发表于 2017-2-9 16:23
会选择一种编码方式,比如自然码、独热码等。综合报告中可以看到的

那如果我自己编码的话,比如这样
CONSTANT st0 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0001" ;
CONSTANT st1 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0010" ;
CONSTANT st2 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0100" ;
CONSTANT st3 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "1000" ;
SIGNAL current_state, next_state: STD_LOGIC_VECTOR(3 DOWNTO 0);
这样的话我看RTL中不会显示States Machine,这是为什么呢?一定要这样写TYPE states IS (st0, st1, st2, st3);
feihufuture 发表于 2017-2-9 17:05 | 显示全部楼层
随便编,没任何问题,编译器足够智能,也可以在代码添加编译辅助语句
 楼主| essunny310 发表于 2017-2-9 17:07 | 显示全部楼层
feihufuture 发表于 2017-2-9 17:05
随便编,没任何问题,编译器足够智能,也可以在代码添加编译辅助语句

那如果我自己编码的话,比如这样
CONSTANT st0 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0001" ;
CONSTANT st1 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0010" ;
CONSTANT st2 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0100" ;
CONSTANT st3 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "1000" ;
SIGNAL current_state, next_state: STD_LOGIC_VECTOR(3 DOWNTO 0);
这样的话我看RTL中不会显示States Machine,这是为什么呢?一定要这样写TYPE states IS (st0, st1, st2, st3);吗?
icecut 发表于 2017-2-9 20:00 | 显示全部楼层
你不按编译器的方法写,编译器怎么知道是个状态机呢?
 楼主| essunny310 发表于 2017-2-9 21:05 | 显示全部楼层
icecut 发表于 2017-2-9 20:00
你不按编译器的方法写,编译器怎么知道是个状态机呢?

那例如这样写TYPE states IS (st0, st1, st2, st3);之后怎么写编码的部分呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部