0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA學習筆記

FPGA設(shè)計論壇 ? 來源:FPGA設(shè)計論壇 ? 2025-03-27 09:34 ? 次閱讀

1.名詞解釋:

FPGA:現(xiàn)場可編程門陣列,一般工藝SRAM(易失性),所以要外掛配置芯片。

CPLD:復雜可編程邏輯器件,一般工藝Flash(不易失)。

ASIC:專用集成電路

SOC:片上系統(tǒng)

SOPC:片上可編程系統(tǒng)

2.Verilog語法類:

①Verilog兩大數(shù)據(jù)類型:一類是線網(wǎng)類型,另一類是寄存器類型。

線網(wǎng)類型表示硬件電路元件之間實際存在的物理連線,有很多種:wire、tri、wor等等,當然日常使用wire最多,其他的都沒遇到過。

寄存器類型表示一個抽象的數(shù)據(jù)存儲單元,只能在initial或always內(nèi)部被賦值,并且變量的值將從一條賦值語句保持到下一條賦值語句。有5種:reg、time(64位無符號的時間變量)、integer(32位帶符號的整數(shù)型變量)、real/realtime(64位帶符號的實數(shù)型變量)。reg用的最多。

②Verilog建模方式:結(jié)構(gòu)化描述方式、數(shù)據(jù)流描述方式、行為描述方式、混合描述方式。

結(jié)構(gòu)描述是指通過調(diào)用邏輯原件,描述它們之間的連接來建立邏輯電路的verilog HDL模型。這里的邏輯元件包括內(nèi)置邏輯門、自主研發(fā)的已有模塊、商業(yè)IP模塊。

數(shù)據(jù)流描述是指根據(jù)信號之間的邏輯關(guān)系,采用持續(xù)賦值語句描述邏輯電路的方式。通過觀察是否使用assign賦值語句可以判斷是否有數(shù)據(jù)流描述。

行為描述是指只注重實現(xiàn)的算法,不關(guān)心具體的硬件實現(xiàn)細節(jié)。這與C語言編程非常類似。通過觀察是否使用initial 或always語句塊可以判斷是否有行為描述。

混合描述是指以上幾種描述方法都存在的一種描述方式。具體在一個工程中,不可能只是用單獨哪一種描述方式,一般都是各種描述方式的混合。

3.VHDL相對于Verilog不能描述的層級?

網(wǎng)上有段話說的是:Verilog在其門級描述的底層,即晶體管開關(guān)級的描述方面比VHDL更強一些,所以即使使用VHDL的設(shè)計環(huán)境,在底層實質(zhì)上也會由Verilog描述的器件庫所支持。

Verilog較為適合系統(tǒng)級、算法級、RTL級、門級、開關(guān)級的設(shè)計,而對于特大型(千萬門級以上)的系統(tǒng)設(shè)計,則VHDL更為適合。(VHDL比較嚴謹,而Verilog可以花式編碼)

所以,VHDL不能描述開關(guān)級。

4.阻塞與非阻塞的區(qū)別:

對于代碼:

 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語句內(nèi)部過程賦值語句有兩種,阻塞賦值語句與非阻塞賦值語句。

兩者主要區(qū)別是完成賦值操作的時間不同,阻塞賦值語句的賦值操作是立即執(zhí)行的,即執(zhí)行后一句的時候,前一句的賦值已經(jīng)完成;而非阻塞賦值語句的賦值操作到結(jié)束順序語句塊時才完成賦值操作,即賦值操作完成后,語句塊的執(zhí)行也就結(jié)束了。即阻塞是串行執(zhí)行,非阻塞是并行執(zhí)行的。對于上述代碼,阻塞賦值中相當于C = A + 1;非阻塞賦值中B先前的值被A替代,但C的值是B先前值加1。

5.亞穩(wěn)態(tài)是什么怎么解決亞穩(wěn)態(tài)?

觸發(fā)器輸入端口的數(shù)據(jù)在時間窗口內(nèi)發(fā)生變化,會導致時序違例。觸發(fā)器的輸出在一段時間內(nèi)徘徊在一個中間電平,既不是0也不是1。這段時間稱為決斷時間(resolution time)。經(jīng)過resolution time之后Q端將穩(wěn)定到0或1上,但是穩(wěn)定到0或者1,是隨機的,與輸入沒有必然的關(guān)系。

觸發(fā)器由于物理工藝原因,數(shù)據(jù)并不是理想化的只要觸發(fā)沿時刻不變即可。觸發(fā)器有固定的建立時間,保持時間。

建立時間:在時鐘有效沿到來前數(shù)據(jù)需要穩(wěn)定的時間。

保持時間:在時鐘有效沿之后數(shù)據(jù)還需要保持不變的時間。

5e3ed67a-0886-11f0-9310-92fbcf53809c.png

后果:會給設(shè)計帶來致命的功能故障。

一般來說,信號是在異步信號,跨時鐘域,復位電路中產(chǎn)生亞穩(wěn)態(tài)。

解決方式:

1.單比特信號:

①采用同步器同步,低速設(shè)計打兩拍,高速設(shè)計可能需要打三拍。

5e4cc6cc-0886-11f0-9310-92fbcf53809c.png

低速到高速時鐘域,低速信號一般能被高速時鐘域采到甚至多次。但高速時鐘域到低速時鐘域就不太好辦了:

②閉環(huán)解決方案:采用握手反饋信號,這會導致延時開銷大。

③開環(huán)解決方案:把信號展寬,至少為采樣T的1.5倍。這樣至少能采到一次。

2.多比特信號:

傳遞多比特信號,普通同步器就沒啥卵用了,因為多比特信號偶發(fā)數(shù)據(jù)變化歪斜,導致采到的不一定是正確數(shù)據(jù)。

①多比特信號融合:把多比特信號轉(zhuǎn)換為單比特信號,再用同步器同步。

②多周期路徑規(guī)劃:數(shù)據(jù)不需要同步,至需要同時傳遞一個同步的使能信號到接收時鐘域即可,使能信號沒被同步到接收時鐘域并被識別之前數(shù)據(jù)不被采集。即在信號某個沿產(chǎn)生同步脈沖指示信號。

③異步fifo。

6.競爭冒險是什么,怎么解決競爭冒險?

在組合電路中,當輸入信號改變狀態(tài)時,輸出端可能出現(xiàn)虛假信號(過渡干擾脈沖),這對電路來說是不利的。

數(shù)字電路中,任何一個門電路只要有兩個輸入信號同時向相反方向變化(由01變成10,或者相反),其輸出端就可能產(chǎn)生干擾脈沖。

信號由于經(jīng)由不同路徑傳輸達到某一匯合點的時間有先有后的現(xiàn)象,就稱之為競爭,英文名Race;由于競爭現(xiàn)象所引起的電路輸出發(fā)生瞬間錯誤的現(xiàn)象,就稱之為冒險,英文名Hazard或者Risk。

有競爭不一定有冒險,但出現(xiàn)了冒險就一定存在競爭。

如下圖的簡單電路,由于門電路的延時,A非相對于A信號會滯后一丟丟(時間由工藝決定),這就會導致輸出產(chǎn)生一個干擾脈沖。

5e58e254-0886-11f0-9310-92fbcf53809c.png

更現(xiàn)實一點,對于一個與門:

5e6086bc-0886-11f0-9310-92fbcf53809c.png

解決方式:

1.引入封鎖脈沖:引入負脈沖,在輸入信號發(fā)生競爭的時間內(nèi),把可能產(chǎn)生的干擾脈沖的門鎖住。

封鎖脈沖的寬度不應(yīng)小于過渡時間且與輸出信號轉(zhuǎn)換同步。

缺點:脈沖寬度和產(chǎn)生時間有嚴格要求。

5e708cec-0886-11f0-9310-92fbcf53809c.png

2.引入選通脈沖:在電路狀態(tài)穩(wěn)定后,再選通輸出。

缺點:脈沖寬度和產(chǎn)生時間有嚴格要求。

5e828e74-0886-11f0-9310-92fbcf53809c.png

3.引入濾波電容:輸出端并接一個不大的濾波電容

缺點:輸出波形邊沿變壞。

5e8d88d8-0886-11f0-9310-92fbcf53809c.png

4.修改邏輯設(shè)計,增加冗余項:

對于給定的邏輯 Y=AB+?C,當BC都為1的時候,若A值改變,則會發(fā)生競爭。所以可以添加冗余項:

Y=AB+?C+BC

分析有無競爭冒險:畫出函數(shù)的卡諾圖,檢查有無幾何相鄰的邏輯項,有則可能產(chǎn)生競爭冒險。

7.你使用的器件名稱含義?

5e9ff702-0886-11f0-9310-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1638

    文章

    21856

    瀏覽量

    609702
  • 集成電路
    +關(guān)注

    關(guān)注

    5409

    文章

    11766

    瀏覽量

    365294
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1360

    瀏覽量

    111090
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    2027

    瀏覽量

    61599
  • 可編程邏輯器件
    +關(guān)注

    關(guān)注

    5

    文章

    145

    瀏覽量

    30457

原文標題:FPGA基礎(chǔ)

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦

    FPGA學習筆記:邏輯單元的基本結(jié)構(gòu)

    邏輯單元在FPGA器件內(nèi)部,用于完成用戶邏輯的最小單元。
    的頭像 發(fā)表于 10-31 11:12 ?2249次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:邏輯單元的基本結(jié)構(gòu)

    Xilinx FPGA學習筆記

    方法1.通過狀態(tài)機來實現(xiàn),通過verilog控制FPGA,讓它該快的時候快,該慢的時候慢。
    的頭像 發(fā)表于 11-02 09:48 ?948次閱讀
    Xilinx <b class='flag-5'>FPGA</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    FPGA學習筆記-入門

    大概10年前,大學同學建議我學習DSP。當因為工作忙,也只是簡單學習了DSP的一些基礎(chǔ)知識,沒有進一步深入學習和時間。結(jié)果現(xiàn)在,好像DSP已經(jīng)不再是主流了,現(xiàn)在有了FPGA。 現(xiàn)在想想
    發(fā)表于 04-09 10:55

    FPGA學習筆記-關(guān)于FPGA資源

    FPGA學習。 在學習中才發(fā)現(xiàn),FPGA遠不是門電路那么簡單。FPGA中有各種需要的資源,比如門電路、存儲單元、片內(nèi)RAM、嵌入式乘法器、
    發(fā)表于 05-22 18:27

    FPGA學習筆記-電源電壓

    通常FPGA中會有各種資源可以使用,而每種資源都需要有電源電壓支持。在單片機中,通常是使用同樣的電源電壓供電的,比如常見的5V、3.3V。而在FPGA中,一般需要:核心電壓、I/O口電壓、PLL電壓
    發(fā)表于 05-22 18:42

    FPGA學習筆記---FPGA的開發(fā)流程

    與通常的單片機應(yīng)用開發(fā)不同,FPGA有自己的開發(fā)流程。但具體上怎樣操作,作為初學者,沒有一點經(jīng)驗。網(wǎng)站獎勵的清華FPGA需要的開發(fā)軟件,到目前還沒有安裝成功。暫且先看看相關(guān)學習,慢慢積累這方面的知識
    發(fā)表于 06-23 14:47

    FPGA學習筆記---基本語法

    Verilog語法是指硬件能夠?qū)崿F(xiàn)的語法。它的子集很小。常用的RTL語法結(jié)構(gòu)如下: 1、模塊聲明:module ... end module 2、端口聲明:input, output, inout 3、信號類型:wire, reg, tri等 4、參數(shù)定義:parameter 5、運算操作符:各種邏輯操作符、移位操作符、算數(shù)操作符等 6、比較判斷:if ... else, case ... default ... endcase 7、連續(xù)賦值:assign, 問號表達式(?:) 8、always模塊:敏感表可以是電平、邊沿信號 9、begin...end(代碼塊?) 10、任務(wù)定義:task...endtask 11、循環(huán)語句:for 12、賦值符號:=和<=(阻塞和非阻塞賦值) 硬件設(shè)計的精髓,力求用最簡單的語言描述最復雜的硬件,這也是硬件描述語言的本質(zhì)。對于做RTL級別的設(shè)計而言,掌握好上面這些語法很重要。
    發(fā)表于 06-23 14:58

    FPGA基礎(chǔ)學習筆記--組合邏輯電路-編碼器和譯碼器

    `FPGA基礎(chǔ)學習筆記--組合邏輯電路-編碼器和譯碼器編碼器4輸入2輸出編碼器代碼如下module encoder (input [3:0] iA,output reg [1:0] oQ
    發(fā)表于 02-20 15:36

    FPGA基礎(chǔ)學習筆記--組合邏輯電路-算術(shù)運算電路

    `FPGA基礎(chǔ)學習筆記--組合邏輯電路-算術(shù)運算電路+、-、*、/、%電路(1)加法電路:每1位大約消耗1個LE,示例代碼如下module arithmetic (input [7:0] iA
    發(fā)表于 02-23 16:45

    《高級FPGA設(shè)計》學習筆記:復位方案

    盡管復位方案極其重要,可是卻是最被忽視的部分之一,許多設(shè)計人員認為FPGA的全局復位資源將會完全解決問題,這是完全不正確的。至于為何說復位的重要性極高,是因為復位方案不好會引起不可重復的錯誤,而不可
    發(fā)表于 12-05 17:09

    C.P FPGA學習筆記

    本帖最后由 普萊斯隊長 于 2016-4-21 18:58 編輯 共同學習,資料部分來自于網(wǎng)絡(luò),再次感謝各位前輩的資料。筆記中也引用了部分資料。本代碼實現(xiàn)功能 接收到什么再發(fā)送出去什么
    發(fā)表于 05-10 20:28

    FPGA學習筆記匯總(7.13更新)

    又有好資料跟大家分享了,再次感謝樓主@oldbeginner {:4_114:}FPGA 學習筆記01 (LCD 1602,verilog)FPGA
    發(fā)表于 06-20 10:42

    INTEL FPGA學習筆記

    INTEL FPGA學習筆記第12節(jié):語法篇_Verilog基礎(chǔ)語法第13節(jié):語法篇_Verilog程序框架第14節(jié):語法篇_Verilog高級知識點第15節(jié):語法篇_Verilog狀態(tài)機第16節(jié)
    發(fā)表于 12-31 19:54 ?15次下載
    INTEL <b class='flag-5'>FPGA</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    Xilinx FPGA學習筆記:原語BUFIO的理解

    我一直沒搞明白BUFIO是干嘛用的。
    的頭像 發(fā)表于 05-08 15:20 ?3181次閱讀
    Xilinx <b class='flag-5'>FPGA</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:原語BUFIO的理解

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

    ,一旦寫入不能再修改或刪除,斷電不丟失。我們知道FPGA只有RAM,因此事實上在 FPGA 中通過 IP 核生成的 ROM 或 RAM掉電內(nèi)容都會丟失。用 IP 核生成的 ROM 模塊只是提前添加
    的頭像 發(fā)表于 08-22 15:06 ?5717次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:ROM IP核的使用方法

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品