CrazyBingo

时序逻辑、组合逻辑,我不再怕你了

0
阅读(3304)

学FPGA也这么久了,会了VHDL,那时候没有时序逻辑、组合逻辑的概念;之后又会了Verilog,一开始还是没有理解时序逻辑、组合逻辑,做东西的时候,发现总是有缺陷。

曾经有次因为4.3inch LCD遇到过郁闷的问题,像素点用时序逻辑和组合逻辑都可以,但是不知道到底用什么;再者,精确到点的时候,两种写法会有不同的效果,但是我不理解……

曾经一度问过我EDA老师,他竟然这样说了一句话:“时序逻辑、组合逻辑是Verilog硬件描述语言设计中最难的部分,很多高级工程师甚至没搞清楚这一点……”

我灰常的郁闷……竟然这样的答案……

这些天调试VGA,像素点的绝对精确,一次一次的尝试,我终于理解了时序逻辑、组合逻辑了,以后不用怕了哈哈……

其 实,组合逻辑: always@ (敏感信号)或者 always @ *,组合逻辑相当于组合电路,与或非门组成的电路,其输出至于当前状态有关,与其他输入状态的函数无关,不涉及信号调变处理(组合逻辑竞争冒险 : 只要输入信号同时变化,组合逻辑就必然产生毛刺);

而时序逻辑:always @(跳变时钟)是时序电路,其输出不仅仅与当前状态有关,只有在时钟跳变的时候才会变化,其最简单的模型相当于DFF,D触发器。

在 VGA驱动设计中,HS,VS等都是时序逻辑,其相当于hcnt,vcnt刚好滞后了一个时钟周期;而xpos,ypos是hcnt,vcnt的组合逻 辑,与时钟同步;在第二个模块中,通过判断xpos,ypos来给定RGB,这又是时序逻辑,刚好滞后了一个时钟周期。因此,一前一后,HS,VS和 RGB像素点,刚好达到了同步,当然必须保证判断到xpos,ypos后的RGB输入为组合逻辑,因为其至于当前状态有关(此处原因已在《时序逻辑__滞 后一个像素》这一章节中讲到)。

很多人看书,看书,while(1){看书};看不懂组合逻辑,时序逻辑;

现在想来,只要你理解其中的内涵,就能运用自如哈哈……