分類:版權聲明:轉載請注明出處:http://blog.csdn.net/lg2lh
一、鎖存器
首先設計鎖存器的時候應該清楚什么是鎖存器,鎖存器其實是對電平信號敏感的,一定信號是電平敏感的,和時鐘邊沿clk無關。
所以用verilog描述的時候,應該是:
[cpp] view plain copy實際綜合后的RTL視圖,可以看到綜合后出現了鎖存器latch
而從Technology Map View可以看出該鎖存器的結構:

實際從FPGA邏輯資源實現上采用了邏輯門實現的,可見FPGA內部一般是沒有鎖存器這樣的單元的。
二、觸發器
首先明白觸發器敏感信號時時鐘邊沿, 在Verilog中表述是這樣的
[cpp] view plain copy而從Technology Map View可以看出FPGA內部實際是有觸發器資源的。

三、避免鎖存器
在(一)中可以看到對于dout分支不全造成了鎖存器。下面再分析一例程序
[cpp] view plain copy再看Technology Map View視圖:
分析:圖中下面兩個位鎖存器的結構,可以看出,鎖存器是有反饋回路的邏輯電路,如圖中標紅的線為反饋信號。

為了盡量避免鎖存器,改為觸發器,修改語句:
[cpp] view plain copy 圖示為修改后的RTL視圖,把分支賦值全了,可以看到鎖存器沒有了,變成了觸發器
再看Technology Map View視圖:
分析:鎖存器消失

缺點:時序分析較困難。
不要鎖存器的原因有二:
1、鎖存器容易產生毛刺,
2、鎖存器在ASIC(專用集成電路)設計中應該說比ff(觸發器)要簡單,但是在FPGA的資源中,大部分器件沒有鎖存器這個東西,所以需要用一個邏輯門和ff
來組成鎖存器,這樣就浪費了資源。(用CPLD(復雜可編程邏輯器件)和FPGA(現場可編程邏輯陣列)來進行ASIC設計是最為流行的方式之一)
優點:面積小。鎖存器比FF快,所以用在地址鎖存是很合適的,不過一定要保證所有的latch信號源的質量,鎖存器在CPU設計中很常見,正是由于它的應用使得
CPU的速度比外部IO部件邏輯快許多。latch完成同一個功能所需要的門較觸發器要少,所以在asic中用的較多。
新聞熱點
疑難解答