latch 是指鎖存器,是一種對脈沖電平敏感的存儲單元電路。鎖存器和寄存器都是基本存儲單元,鎖存器是電平觸發(fā)的存儲器,寄存器是邊沿觸發(fā)的存儲器。兩者的基本功能是一樣的,都可以存儲數(shù)據(jù)。鎖存器是組合邏輯產(chǎn)生的,而寄存器是在時序電路中使用,由時鐘觸發(fā)產(chǎn)生的。
latch 的主要危害是會產(chǎn)生毛刺(glitch),這種毛刺對下一級電路是很危險的。并且其隱蔽性很強,不易查出。因此,在設計中,應盡量避免 latch 的使用。
代碼里面出現(xiàn)latch 的兩個原因是在組合邏輯中,if 或者case 語句不完整的描述,比如if 缺少else 分支,case 缺少 default 分支,導致代碼在綜合過程中出現(xiàn)了 latch。解決辦法就是if 必須帶else 分支,case 必須帶default 分支。
大家需要注意下,只有不帶時鐘的always 語句if 或者 case 語句不完整才會產(chǎn)生 latch,帶時鐘的語句if或者 case 語句不完整描述不會產(chǎn)生 latch。
下面為缺少else 分支的帶時鐘的always 語句和不帶時鐘的 always 語句,通過實際產(chǎn)生的電路圖可以看到第二個是有一個latch的,第一個仍然是普通的帶有時鐘的寄存器。文章來源:http://www.zghlxwxcb.cn/news/detail-505228.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-505228.html
到了這里,關于FPGA之鎖存器(Latch)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!