FPGA基础之锁存器与触发器的设计
版權聲明:轉載請注明出處:http://blog.csdn.net/lg2lh
一、鎖存器
首先設計鎖存器的時候應該清楚什么是鎖存器,鎖存器其實是對電平信號敏感的,一定信號是電平敏感的,和時鐘邊沿clk無關。
所以用verilog描述的時候,應該是:
[cpp]?view plaincopy
實際綜合后的RTL視圖,可以看到綜合后出現(xiàn)了鎖存器latch
而從Technology Map View可以看出該鎖存器的結構:
實際從FPGA邏輯資源實現(xiàn)上采用了邏輯門實現(xiàn)的,可見FPGA內部一般是沒有鎖存器這樣的單元的。
二、觸發(fā)器
首先明白觸發(fā)器敏感信號時時鐘邊沿, 在Verilog中表述是這樣的
[cpp]?view plaincopy
而從Technology Map View可以看出FPGA內部實際是有觸發(fā)器資源的。
三、避免鎖存器
在(一)中可以看到對于dout分支不全造成了鎖存器。下面再分析一例程序
[cpp]?view plaincopy
[cpp]?view plaincopy
RTL視圖為:包含兩個鎖存器和一個觸發(fā)器。
分析:雖然下面的alway里分支都有(if else都有)但是每個分支只對其中一個寄存器賦值,再另一分支中沒有再對相應寄存器賦值。
所以對于dout2和dout都形成了鎖存器。
再看Technology Map View視圖:
分析:圖中下面兩個位鎖存器的結構,可以看出,鎖存器是有反饋回路的邏輯電路,如圖中標紅的線為反饋信號。
為了盡量避免鎖存器,改為觸發(fā)器,修改語句:
[cpp]?view plaincopy
圖示為修改后的RTL視圖,把分支賦值全了,可以看到鎖存器沒有了,變成了觸發(fā)器
再看Technology Map View視圖:
分析:鎖存器消失
缺點:時序分析較困難。
?
不要鎖存器的原因有二:
1、鎖存器容易產生毛刺,
2、鎖存器在ASIC(專用集成電路)設計中應該說比ff(觸發(fā)器)要簡單,但是在FPGA的資源中,大部分器件沒有鎖存器這個東西,所以需要用一個邏輯門和ff
來組成鎖存器,這樣就浪費了資源。(用CPLD(復雜可編程邏輯器件)和FPGA(現(xiàn)場可編程邏輯陣列)來進行ASIC設計是最為流行的方式之一)
?優(yōu)點:面積小。鎖存器比FF快,所以用在地址鎖存是很合適的,不過一定要保證所有的latch信號源的質量,鎖存器在CPU設計中很常見,正是由于它的應用使得
CPU的速度比外部IO部件邏輯快許多。latch完成同一個功能所需要的門較觸發(fā)器要少,所以在asic中用的較多。
總結
以上是生活随笔為你收集整理的FPGA基础之锁存器与触发器的设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FPGA基础之逻辑单元(LE or LC
- 下一篇: parameter与define 区别