打印

Verilog HDL 学习笔记

[复制链接]
17004|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GoldSunMonkey|  楼主 | 2012-9-18 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
(1)独热(one-hot)码
       所谓的独热码是指对任意给定的状态,状态向量中只有1位为1,其余位都是为0。n状态的状态机需要n个触发器。这种状态机的速度与状态的数量无关,仅取决于到某特定状态的转移数量,速度很快。当状态机的状态增加时,如果使用二进制编码,那么状态机速度会明显下降。而采用独热码,虽然多用了触发器,但由于状态译码简单,节省和简化了组合逻辑电路。独热编码还具有设计简单、修改灵活、易于综合和调试等优点。对于寄存器数量多、而门逻辑相对缺乏的FPGA器件,采用独热编码可以有效提高电路的速度和可靠性,也有利于提高器件资源的利用率。独热编码有很多无效状态,应该确保状态机一旦进入无效状态时,可以立即跳转到确定的已知状态。通过独热码可是实现简单的有限状态机。
(2)有限状态机(Finite State Machine)
Mealy 机是基于它的当前状态和输入生成输出的有限状态自动机。
Moore 机是输出只由当前状态自己(不直接依赖于输入)确定的有限状态自动机。
Verilog HDL常用三个always块描述同步Mealy状态机,两个时序always块分别用于描述现状态逻辑和对输出赋值,组合always块用户产生下一个状态。优点是:寄存器输出,输出无毛刺,并且代码比单always块清晰易读。缺点是:面积大于双always块。
有限状态机最重要的是状态转移条件和当前的状态以及当前的输入。
下面以三always块模块给出状态机的Verilog模板。
// 构成状态跳转环
always @(posedge clk or negedge rst_n)
         current_state <= next_state;
// 完成状态机的内部逻辑
always @ (current_state or ) begin
          case(current_state)
                  S1: next_state = S2;
                  S2: next_state = S1;
          default: next_state = S2;
          endcase
end
// 完成状态机的外部逻辑
always @(current_state or ) begin
       case(current_state)
       S1:
       S2:
       default:
       endcase
end  
(3)综合状态机的一般原则 在硬件描述语言中,许多基于仿真的语句虽然符合语法规则,但是不能映射到硬件逻辑电路单元,如果要最终实现硬件设计,必须写出可以综合的程序。通常,综合的原则为:

综合之前一定要进行仿真,仿真会暴露逻辑错误。如果不做仿真,没有发现的逻辑错误会进入综合器,使综合的结果产生同样的逻辑错误。  每一次布线之后都要进行仿真,在器件编程或流片之前一定要进行最后的仿真。

用Verilog HDL描述的异步状态机是不能综合的,应该避免用综合器来设计。在必须设计异步状态机时,建议用电路图输入的方法
状态机应该有一个异步或同步复位端,以便在通电时将硬件电路复位到有效状态。建议使用异步复位以简化硬件开销。

时序逻辑电路建模时,用非阻塞赋值。用always块写组合逻辑时,采用阻塞赋值。不要在多个always块中为同一个变量赋值。

always块中应该避免组合反馈回路。在赋值表达式右端参与赋值的信号都必须出现在敏感信号列表中,否则在综合时,会为没有列出的信号隐含地产生一个透明锁存器。

相关帖子

沙发
jahnson066| | 2012-9-18 18:19 | 只看该作者
新手学习一下

使用特权

评论回复
板凳
fuzhoulzp| | 2012-9-23 14:01 | 只看该作者
最近也在学FPGA,看来是先要写VHDL语言了!

使用特权

评论回复
地板
springspring| | 2012-9-23 14:56 | 只看该作者
刚好需要,不错,谢谢楼主

使用特权

评论回复
5
倚天看海| | 2012-11-23 13:55 | 只看该作者
谢谢分享啊顶起

使用特权

评论回复
6
rypde| | 2012-11-23 15:25 | 只看该作者
新手过来学习

使用特权

评论回复
7
Tianya283| | 2012-11-23 20:42 | 只看该作者
猴哥,不错。

使用特权

评论回复
8
GoldSunMonkey|  楼主 | 2012-11-23 20:55 | 只看该作者
猴哥,不错。
Tianya283 发表于 2012-11-23 20:42
不客气

使用特权

评论回复
9
as@yangjun| | 2013-2-6 09:03 | 只看该作者
学习

使用特权

评论回复
10
菜鸟003| | 2013-2-21 13:17 | 只看该作者

使用特权

评论回复
11
28182900| | 2013-2-25 15:58 | 只看该作者
轻轻的顶一下

使用特权

评论回复
12
menglong200806| | 2013-3-22 09:35 | 只看该作者

新手学习一下

使用特权

评论回复
13
千山万水js| | 2013-3-22 09:58 | 只看该作者
顶猴哥

使用特权

评论回复
14
GoldSunMonkey|  楼主 | 2013-3-23 22:37 | 只看该作者
千山万水js 发表于 2013-3-22 09:58
顶猴哥

谢谢啦

使用特权

评论回复
15
wmsk| | 2013-3-23 23:10 | 只看该作者
GoldSunMonkey 发表于 2013-3-23 22:37
谢谢啦

人气不错啊

使用特权

评论回复
16
mkapm11| | 2013-3-24 00:14 | 只看该作者
谢谢~

使用特权

评论回复
17
qin552011373| | 2013-3-24 00:16 | 只看该作者
新手飘过

使用特权

评论回复
18
ifpga| | 2013-3-25 08:33 | 只看该作者

使用特权

评论回复
19
GoldSunMonkey|  楼主 | 2013-3-26 00:02 | 只看该作者
:loveliness:

使用特权

评论回复
20
luhy_ah| | 2013-3-26 08:38 | 只看该作者
学过的都忘了...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:                     2014, 追逐梦想

264

主题

17215

帖子

523

粉丝