1.名詞解釋:
FPGA:現場可編程門陣列,一般工藝SRAM(易失性),所以要外掛配置芯片。
CPLD:復雜可編程邏輯器件,一般工藝Flash(不易失)。
SOC:片上系統
SOPC:片上可編程系統
2.Verilog語法類:
①Verilog兩大數據類型:一類是線網類型,另一類是寄存器類型。
線網類型表示硬件電路元件之間實際存在的物理連線,有很多種:wire、tri、wor等等,當然日常使用wire最多,其他的都沒遇到過。
寄存器類型表示一個抽象的數據存儲單元,只能在initial或always內部被賦值,并且變量的值將從一條賦值語句保持到下一條賦值語句。有5種:reg、time(64位無符號的時間變量)、integer(32位帶符號的整數型變量)、real/realtime(64位帶符號的實數型變量)。reg用的最多。
②Verilog建模方式:結構化描述方式、數據流描述方式、行為描述方式、混合描述方式。
結構描述是指通過調用邏輯原件,描述它們之間的連接來建立邏輯電路的verilog HDL模型。這里的邏輯元件包括內置邏輯門、自主研發的已有模塊、商業IP模塊。
數據流描述是指根據信號之間的邏輯關系,采用持續賦值語句描述邏輯電路的方式。通過觀察是否使用assign賦值語句可以判斷是否有數據流描述。
行為描述是指只注重實現的算法,不關心具體的硬件實現細節。這與C語言編程非常類似。通過觀察是否使用initial 或always語句塊可以判斷是否有行為描述。
混合描述是指以上幾種描述方法都存在的一種描述方式。具體在一個工程中,不可能只是用單獨哪一種描述方式,一般都是各種描述方式的混合。
3.VHDL相對于Verilog不能描述的層級?
網上有段話說的是:Verilog在其門級描述的底層,即晶體管開關級的描述方面比VHDL更強一些,所以即使使用VHDL的設計環境,在底層實質上也會由Verilog描述的器件庫所支持。
Verilog較為適合系統級、算法級、RTL級、門級、開關級的設計,而對于特大型(千萬門級以上)的系統設計,則VHDL更為適合。(VHDL比較嚴謹,而Verilog可以花式編碼)
所以,VHDL不能描述開關級。
4.阻塞與非阻塞的區別:
對于代碼:
1 //blocking; 2 begin 3 B = A; 4 C = B + 1; 5 end 6 //non-blocking; 7 begin 8 B <= A; 9 C <= B + 1; 10 end
在always語句內部過程賦值語句有兩種,阻塞賦值語句與非阻塞賦值語句。
兩者主要區別是完成賦值操作的時間不同,阻塞賦值語句的賦值操作是立即執行的,即執行后一句的時候,前一句的賦值已經完成;而非阻塞賦值語句的賦值操作到結束順序語句塊時才完成賦值操作,即賦值操作完成后,語句塊的執行也就結束了。即阻塞是串行執行,非阻塞是并行執行的。對于上述代碼,阻塞賦值中相當于C = A + 1;非阻塞賦值中B先前的值被A替代,但C的值是B先前值加1。
5.亞穩態是什么怎么解決亞穩態?
觸發器輸入端口的數據在時間窗口內發生變化,會導致時序違例。觸發器的輸出在一段時間內徘徊在一個中間電平,既不是0也不是1。這段時間稱為決斷時間(resolution time)。經過resolution time之后Q端將穩定到0或1上,但是穩定到0或者1,是隨機的,與輸入沒有必然的關系。
觸發器由于物理工藝原因,數據并不是理想化的只要觸發沿時刻不變即可。觸發器有固定的建立時間,保持時間。
建立時間:在時鐘有效沿到來前數據需要穩定的時間。
保持時間:在時鐘有效沿之后數據還需要保持不變的時間。
后果:會給設計帶來致命的功能故障。
一般來說,信號是在異步信號,跨時鐘域,復位電路中產生亞穩態。
解決方式:
1.單比特信號:
①采用同步器同步,低速設計打兩拍,高速設計可能需要打三拍。
低速到高速時鐘域,低速信號一般能被高速時鐘域采到甚至多次。但高速時鐘域到低速時鐘域就不太好辦了:
②閉環解決方案:采用握手反饋信號,這會導致延時開銷大。
③開環解決方案:把信號展寬,至少為采樣T的1.5倍。這樣至少能采到一次。
2.多比特信號:
傳遞多比特信號,普通同步器就沒啥卵用了,因為多比特信號偶發數據變化歪斜,導致采到的不一定是正確數據。
①多比特信號融合:把多比特信號轉換為單比特信號,再用同步器同步。
②多周期路徑規劃:數據不需要同步,至需要同時傳遞一個同步的使能信號到接收時鐘域即可,使能信號沒被同步到接收時鐘域并被識別之前數據不被采集。即在信號某個沿產生同步脈沖指示信號。
③異步fifo。
6.競爭冒險是什么,怎么解決競爭冒險?
在組合電路中,當輸入信號改變狀態時,輸出端可能出現虛假信號(過渡干擾脈沖),這對電路來說是不利的。
在數字電路中,任何一個門電路只要有兩個輸入信號同時向相反方向變化(由01變成10,或者相反),其輸出端就可能產生干擾脈沖。
信號由于經由不同路徑傳輸達到某一匯合點的時間有先有后的現象,就稱之為競爭,英文名Race;由于競爭現象所引起的電路輸出發生瞬間錯誤的現象,就稱之為冒險,英文名Hazard或者Risk。
有競爭不一定有冒險,但出現了冒險就一定存在競爭。
如下圖的簡單電路,由于門電路的延時,A非相對于A信號會滯后一丟丟(時間由工藝決定),這就會導致輸出產生一個干擾脈沖。
更現實一點,對于一個與門:
解決方式:
1.引入封鎖脈沖:引入負脈沖,在輸入信號發生競爭的時間內,把可能產生的干擾脈沖的門鎖住。
封鎖脈沖的寬度不應小于過渡時間且與輸出信號轉換同步。
缺點:脈沖寬度和產生時間有嚴格要求。
2.引入選通脈沖:在電路狀態穩定后,再選通輸出。
缺點:脈沖寬度和產生時間有嚴格要求。
3.引入濾波電容:輸出端并接一個不大的濾波電容
缺點:輸出波形邊沿變壞。
4.修改邏輯設計,增加冗余項:
對于給定的邏輯 Y=AB+?C,當BC都為1的時候,若A值改變,則會發生競爭。所以可以添加冗余項:
Y=AB+?C+BC
分析有無競爭冒險:畫出函數的卡諾圖,檢查有無幾何相鄰的邏輯項,有則可能產生競爭冒險。
7.你使用的器件名稱含義?
-
FPGA
+關注
關注
1638文章
21856瀏覽量
609704 -
集成電路
+關注
關注
5409文章
11767瀏覽量
365294 -
Verilog
+關注
關注
28文章
1360瀏覽量
111090 -
觸發器
+關注
關注
14文章
2027瀏覽量
61600 -
可編程邏輯器件
+關注
關注
5文章
145瀏覽量
30457
原文標題:FPGA基礎
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
FPGA學習筆記-入門
FPGA學習筆記-關于FPGA資源
FPGA學習筆記-電源電壓
FPGA的學習筆記---FPGA的開發流程
FPGA學習筆記---基本語法
FPGA基礎學習筆記--組合邏輯電路-編碼器和譯碼器
FPGA基礎學習筆記--組合邏輯電路-算術運算電路
《高級FPGA設計》學習筆記:復位方案
C.P FPGA學習筆記
FPGA學習筆記匯總(7.13更新)
INTEL FPGA學習筆記

FPGA學習筆記:ROM IP核的使用方法

評論