時(shí)序邏輯影響計(jì)數(shù)器精度
作者:陳刀刀
本文為明德?lián)P原創(chuàng)文章,轉(zhuǎn)載請注明出處!
本文將討論時(shí)序邏輯對明德?lián)P設(shè)計(jì)的計(jì)數(shù)器的計(jì)數(shù)精度的影響。由于FPGA是時(shí)序邏輯,只在時(shí)序上升沿時(shí)才統(tǒng)計(jì)一次,這意味著統(tǒng)計(jì)的精度只能是以“時(shí)鐘周期”為單位,即:存在小于一個(gè)時(shí)鐘周期信號(hào)無法采樣的情況。因?yàn)槊鞯聯(lián)P計(jì)數(shù)器是在時(shí)鐘上升沿時(shí)判斷計(jì)數(shù)器是否加一,所以計(jì)數(shù)器的計(jì)數(shù)精度也是以“時(shí)鐘周期”為單位。
我們可以用一個(gè)例子來看一下計(jì)數(shù)器計(jì)數(shù)0時(shí)的一種誤差情況,假設(shè)有一個(gè)隨機(jī)的輸入din_vld,初值等于1,然后在一個(gè)任意時(shí)刻變?yōu)?。現(xiàn)在要計(jì)算din_vld變?yōu)?的前30個(gè)時(shí)鐘周期長度。計(jì)數(shù)器代碼如下圖:

計(jì)數(shù)器cnt在時(shí)鐘上升沿的時(shí)刻檢測到din_vld==0時(shí)cnt加一,所以cnt計(jì)算出來的是din_vld==0時(shí)cnt=0~29的30個(gè)時(shí)鐘周期。
下圖為使用仿真軟件得出該代碼的波形,當(dāng)din_vld不在時(shí)鐘上升沿的時(shí)刻變?yōu)?,則cnt==0時(shí),din_vld==0的長度并不夠1個(gè)時(shí)鐘周期。因?yàn)闀r(shí)序邏輯影響計(jì)數(shù)器的精度是以“時(shí)鐘周期”為單位,所以并不影響計(jì)數(shù)器的計(jì)數(shù)。最終計(jì)算出來din_vld==0的前30個(gè)周期的長度,會(huì)產(chǎn)生長度為一個(gè)時(shí)鐘內(nèi)的誤差。
