Verilog基礎(chǔ)之十五、鎖存器實(shí)現(xiàn)
一、前言
????在之前的文章中介紹過寄存器,本節(jié)介紹一個(gè)類似的邏輯單元:鎖存器。在大部分的資料和文章介紹中,都是告訴讀者設(shè)計(jì)中應(yīng)盡量避免出現(xiàn)鎖存器,這主要是由鎖存器的特點(diǎn)決定的。
????鎖存器和普通觸發(fā)器最大的區(qū)別就是鎖存器為電平觸發(fā),如高電平或低電平,而觸發(fā)器為邊沿觸發(fā),這一特性使得鎖存器不如觸發(fā)器穩(wěn)定,電平觸發(fā)容易受干擾信號(hào)的影響而導(dǎo)致狀態(tài)變化,也即產(chǎn)生毛刺。另一方面,因?yàn)榭刹皇軙r(shí)鐘控制,不利于時(shí)序分析,時(shí)序分析更加復(fù)雜。
二、工程設(shè)計(jì)
????以器件xc7k480tffv1156-1為例,在器件的原語列表中,有兩種類型的鎖存器:LDCE(異步清零/復(fù)位),LDPE(異步置位)

可以直接例化生成鎖存器,此種方式將不介紹,主要介紹RTL代碼生成鎖存器。
2.1 工程代碼
設(shè)計(jì)中包含正常綜合LDPE,LDCE的場(chǎng)景以及設(shè)計(jì)不完整意外導(dǎo)致鎖存器的場(chǎng)景
2.2 綜合結(jié)果
通過紅框1和2中LDCE和LDPE的實(shí)現(xiàn)代碼區(qū)別為清零與置位。o_casey與o_ify可知完整的if-else邏輯以及case語句邏輯是通過LUT來實(shí)現(xiàn),欄框5中o_ff用FDRE實(shí)現(xiàn),即使if語句不完整也不會(huì)綜合出鎖存器。

2.3 Latch實(shí)現(xiàn)
在device圖中,每一個(gè)slice中有一個(gè)cell可放置鎖存器。

同理,觸發(fā)器o_ff也是放置于slice的AFF中,類型Type為Flop&Latch說明即可為觸發(fā)器也可以為存儲(chǔ)器
