目录:
一.设计要求
二.Verilog 代码
三.功能仿真
四.逻辑综合
五.形式验证
一.设计要求
方案设计时,状态编码可以是格雷码、也可以是独热码。 HDL代码设计可以采用二段式、也可以是三段式。采用四种方案:
方案一(格雷码、二段式);方案二(格雷码、三段式);方案三(独热码、二段式);方案一(独热码、三段式)。
请采用这四种方案分别实现, 要求如下:
1、请自定义端口信号,设计并提交图1有限状态机在四种方案下的HDL代码,请注意Code Style。
2,分别给出四种方案下的功能仿真策略和仿真结果。
3,选择合适的工艺,分别完成四种方案下的逻辑综合。请以脚本.tcl形式给出你所加的设计约束条件和该约束条件下的综合结果,注意:报告中不能出现Violation。
4,完成形式验证。
二,verilog 代码
本设计选用摩尔型有限状态机,虽然所消耗的资源有可能比米利型多,但是摩尔型抗干扰能力比米利型强。该状态机端口定义如图2-1所示:
二进制码 | 格雷码 | 独热码 | |
---|---|---|---|
S0 | 2`b00 | 2b00 | 4b0001 |
– | – | – | – |
S1 | 2`b01 | 2b01 | 4b0010 |
– | – | – | – |
S2 | 2`b10 | 2b11 | 4b0100 |
– | – | – | – |
S3 | 2`b11 | 2b10 | 41000 |
– | – | – | – |
- 1 二段式
二段式采用两个always块描述,分别描述状态转移和结果输出。结构框图如图2-2所示:
上图由两大部分构成,组合逻辑电路和时序逻辑电路。其中,组合逻辑电路实现结果输出的功能,时序逻辑电路实现状态转移的功能,分别对应两个always块语句。
2.1.1 格雷码
二段式格雷编码代码如下:
端口定义如下:
定义输出结果变量和中间变量的数据类型:
状态转移由时序逻辑电路实现,其代码如下:
输出由组合逻辑电路实现,其代码如下: