国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

FPGA基礎之鎖存器與觸發器的設計

2019-11-08 19:42:26
字體:
來源:轉載
供稿:網友

FPGA基礎之鎖存器與觸發器的設計

2014-09-05 17:07 2706人閱讀 評論(2) 收藏 舉報 分類:

一、鎖存器

首先設計鎖存器的時候應該清楚什么是鎖存器,鎖存器其實是對電平信號敏感的,一定信號是電平敏感的,和時鐘邊沿clk無關。

所以用verilog描述的時候,應該是:

[cpp] view plain copy 在CODE上查看代碼片always @(a,b,e)  begin      if(e)         dout<=a;  end  產生鎖存器的原因是因為各條件分支對dout的賦值不全,在else分支內沒有對dout操作,這樣就會造成鎖存器。

實際綜合后的RTL視圖,可以看到綜合后出現了鎖存器latch

而從Technology Map View可以看出該鎖存器的結構:

實際從FPGA邏輯資源實現上采用了邏輯門實現的,可見FPGA內部一般是沒有鎖存器這樣的單元的。

二、觸發器

首先明白觸發器敏感信號時時鐘邊沿, 在Verilog中表述是這樣的

[cpp] view plain copy 在CODE上查看代碼片always@(posedge clk or negedge rst_n)  begin      if(~rst_n)          dout1<=1'b0;      else if(e)          dout1<=a;      else           dout1<=b;  end   其RTL視圖為一個觸發器:

而從Technology Map View可以看出FPGA內部實際是有觸發器資源的。

三、避免鎖存器

在(一)中可以看到對于dout分支不全造成了鎖存器。下面再分析一例程序

[cpp] view plain copy 在CODE上查看代碼片reg  dout,dout1,dout2 ;       always@(posedge clk or negedge rst_n)    begin        if(~rst_n)            dout1<=1'b0;        else if(e)            dout1<=a;        else             dout1<=b;    end     always@(a,b,e)     begin        if(e)        begin            dout2<=a;          end        else        begin            dout<=b;          end    end   

[cpp] view%20plain copy </

再看Technology Map View視圖:

分析:圖中下面兩個位鎖存器的結構,可以看出,鎖存器是有反饋回路的邏輯電路,如圖中標紅的線為反饋信號。

為了盡量避免鎖存器,改為觸發器,修改語句:

[cpp] view plain copy 在CODE上查看代碼片always@(posedge clk or negedge rst_n)    begin        if(~rst_n)            dout1<=1'b0;        else if(e)            dout1<=a;        else             dout1<=b;    end     always@(posedge clk )     begin        if(e)        begin            dout2<=a;        end        else        begin            dout<=b;          end    end   

圖示為修改后的RTL視圖,把分支賦值全了,可以看到鎖存器沒有了,變成了觸發器

再看Technology Map View視圖:

分析:鎖存器消失

缺點:時序分析較困難。

 

不要鎖存器的原因有二:

1、鎖存器容易產生毛刺,

2、鎖存器在ASIC(專用集成電路)設計中應該說比ff(觸發器)要簡單,但是在FPGA的資源中,大部分器件沒有鎖存器這個東西,所以需要用一個邏輯門和ff

來組成鎖存器,這樣就浪費了資源。(用CPLD(復雜可編程邏輯器件)和FPGA(現場可編程邏輯陣列)來進行ASIC設計是最為流行的方式之一)

 優點:面積小。鎖存器比FF快,所以用在地址鎖存是很合適的,不過一定要保證所有的latch信號源的質量,鎖存器在CPU設計中很常見,正是由于它的應用使得

CPU的速度比外部IO部件邏輯快許多。latch完成同一個功能所需要的門較觸發器要少,所以在asic中用的較多。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 综艺| 富蕴县| 泰和县| 杭锦后旗| 思南县| 开江县| 金乡县| 广汉市| 靖江市| 长兴县| 三穗县| 武安市| 额尔古纳市| 衡山县| 延津县| 左权县| 昭苏县| 富川| 遵义县| 大荔县| 师宗县| 广灵县| 马尔康县| 炎陵县| 吐鲁番市| 鞍山市| 永安市| 张家界市| 卢龙县| 台北县| 烟台市| 平阳县| 济源市| 通城县| 商水县| 林西县| 宁远县| 武胜县| 美姑县| 朝阳区| 友谊县|