前言
有關(guān)FPGA的簡答題
一、理論基礎(chǔ)題一
1.1、FPGA和CPLD的區(qū)別?
FPGA和CPLD都是數(shù)字電路的可編程邏輯器件,它們的主要區(qū)別在于規(guī)模和靈活性。
FPGA(FieldProgrammable_GateArray是一種可編程邏輯器件,由大量的可編程邏輯單元(例如邏輯門、寄存器等)和可編程的互連資源(例如通道、開關(guān)、線纜等)組成。FPGA可實(shí)現(xiàn)復(fù)雜的數(shù)字電路設(shè)計(jì),包括高速數(shù)據(jù)通信、圖像處理、信號(hào)處理等。FPGA的規(guī)模較大,可以實(shí)現(xiàn)非常復(fù)雜的電路,但它的設(shè)計(jì)和實(shí)現(xiàn)需要較高的技術(shù)水平和成本。
CPLD(Complex Programmable Logic Device)則是一種較小規(guī)模的可編程邏輯器件。 CPLD通常由可編程邏輯單元和可編程互連資源組成,但規(guī)模相對(duì)較小,更適合于較簡單的電路設(shè)計(jì)。CPLD的設(shè)計(jì)和實(shí)現(xiàn)相對(duì)簡單,成本也較低。因此,F(xiàn)PGA適用于需要高速、高密度、高度定制的應(yīng)用,而CPLD適用于較簡單的電路設(shè)計(jì),例如控制器、時(shí)序器等。
1.2、Latch 和 Register 區(qū)別?行為描述中 Latch 如何產(chǎn)生?
latch是電平觸發(fā),reg是邊沿觸發(fā)。時(shí)序設(shè)計(jì)中盡量使用reg觸發(fā)。行為描述中,如果對(duì)應(yīng)所有可能輸入條件,有的輸入沒有對(duì)應(yīng)明確的輸出,系統(tǒng)會(huì)綜合出latch。
1.3、什么是競爭和冒險(xiǎn),如何消除?
競爭:在組合邏輯電路中,門電路兩個(gè)輸入信號(hào)同時(shí)向相反的邏輯電平跳變(一個(gè)從1變?yōu)?,另一個(gè)從0變?yōu)?)的現(xiàn)象。
競爭-冒險(xiǎn):由于競爭而在電路輸出端可能產(chǎn)生尖峰脈沖的現(xiàn)象。
三種消除競爭冒險(xiǎn)的方式:①輸出端接入濾波電容;②引入選通脈沖或者使用時(shí)序邏輯電路;③修改邏輯設(shè)計(jì),增加冗余項(xiàng)。
1.4、bit, byte, word, dword, qword的區(qū)別?
①比特(bit):比特是計(jì)算機(jī)數(shù)據(jù)的最小單位,它表示一個(gè)二進(jìn)制位,即0或1。比特用于表示數(shù)據(jù)的最基本的單元,例如一個(gè)開關(guān)狀態(tài)或一個(gè)二進(jìn)制位。
②字節(jié)(Byte):是8個(gè)比特組成的數(shù)據(jù)單位。
③字(Word):是處理器一次能處理的二進(jìn)制位數(shù),大小可以根據(jù)體系結(jié)構(gòu)變化。
④雙字(Dword):是32位數(shù)據(jù)單位,由4個(gè)字節(jié)組成。
⑤四字(Qword):是64位數(shù)據(jù)單位,由兩個(gè)雙子組成,即8個(gè)字節(jié)組成。
1.5、FPGA的內(nèi)部結(jié)構(gòu)組成?
LABs(邏輯陣列塊):有多個(gè)邏輯單元(LEs)組成,每個(gè)邏輯單元由一個(gè)查找表和一個(gè)觸發(fā)器組成。EP4CE6F17C8邏輯陣列塊有16個(gè)LE。
IOB(可編程邏輯IO口):有輸入(in)、輸出(out)、輸入輸出(in_out)三種。
時(shí)鐘資源:鎖相環(huán)(PLL)——(1、使輸出時(shí)鐘走全局時(shí)鐘網(wǎng)絡(luò);2、分頻,倍頻,相位偏移)。
嵌入式存儲(chǔ)塊——M9K。
DSP模塊——高性能乘法、除法、累加運(yùn)算。
1.6、什么是原碼,反碼,補(bǔ)碼。以8bit為例,給出各自表示的數(shù)值范圍?
原碼:是最基本的有符號(hào)整數(shù)表示方式。在原碼中,數(shù)值的最高位(最左邊的位)表示符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。其余位表示數(shù)值的大小。
反碼:是在原碼的基礎(chǔ)上進(jìn)行取反得到的表示方式。對(duì)于正數(shù),反碼與原碼相同。而對(duì)于負(fù)數(shù),反碼是將原碼中除符號(hào)位外的每一位取反(0變1,1變0)。
補(bǔ)碼:是在反碼的基礎(chǔ)上加1得到的表示方式。對(duì)于正數(shù),補(bǔ)碼與原碼相同。對(duì)于負(fù)數(shù),補(bǔ)碼是將反碼中的每一位取反,并在最低位加1。
1.7、簡述 FPGA 中查找表的原理與結(jié)構(gòu)?
①查找表簡稱LUT,本質(zhì)上就是一個(gè)RAM。目前FPGA中多數(shù)使用的是4輸入的LUT,所以可以看成一個(gè)有4位地址線的RAM。
②當(dāng)描述了一個(gè)邏輯電路以后,F(xiàn)PGA 開發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)事先寫入 RAM,這樣,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容,然后輸出即可。
1.8、簡述有限狀態(tài)機(jī) FSM 分為哪兩類?有何區(qū)別?有限狀態(tài)機(jī)的狀態(tài)編碼風(fēng)格主要有哪三種?FSM 的三段式描述風(fēng)格中,三段分別描述什么?
(1)有限狀態(tài)機(jī) FSM 分為 Moore 型和 Mealy 型,
Moore 型:輸出狀態(tài)只和當(dāng)前狀態(tài)有關(guān)。
Mealy 型:輸出狀態(tài)不僅和當(dāng)前狀態(tài)有關(guān)還和輸入狀態(tài)有關(guān);
(2)有限狀態(tài)機(jī)常用的狀態(tài)編碼風(fēng)格主要有:二進(jìn)制編碼、獨(dú)熱碼、格雷碼。
(3)FSM 的三段式描述風(fēng)格中,三段分別描述:
第一段–時(shí)序邏輯–描述狀態(tài)轉(zhuǎn)移
第二段–組合邏輯–描述狀態(tài)轉(zhuǎn)移規(guī)律
第三段–組合/時(shí)序邏輯均可–描述輸出
二、理論基礎(chǔ)題二
2.1、簡述建立時(shí)間和保持時(shí)間的概念?
建立時(shí)間(setup time):觸發(fā)器在時(shí)鐘上升沿到來之前,數(shù)據(jù)輸入端的數(shù)據(jù)必須保持不變的最小時(shí)間。
保持時(shí)間(hold time):觸發(fā)器在時(shí)鐘上升沿到來之后,數(shù)據(jù)輸入端的數(shù)據(jù)必須保持不變的最小時(shí)間。
2.2、亞穩(wěn)態(tài)的概念?產(chǎn)生的原因?如何防止亞穩(wěn)態(tài)?
亞穩(wěn)態(tài)是指觸發(fā)器無法在某個(gè)規(guī)定時(shí)間段內(nèi)達(dá)到一個(gè)可確認(rèn)的狀態(tài)。
產(chǎn)生原因:在異步系統(tǒng)中,寄存器建立時(shí)間、保持時(shí)間不滿足引起亞穩(wěn)態(tài)。
解決方法:
1 降低系統(tǒng)時(shí)鐘頻率(擴(kuò)大系統(tǒng)時(shí)鐘周期)
2 用反應(yīng)更快的 FF(flip-flop觸發(fā)器)
3 引入同步機(jī)制(采用加兩級(jí)觸發(fā)器)。
2.3、reg 和 wire 的區(qū)別?
reg是寄存器類型可以存儲(chǔ)數(shù)據(jù),wire是線網(wǎng)型;
reg型在 always塊和 initial塊中賦值,wire 型用 assign 賦值;
reg型可用于時(shí)序邏輯和組合邏輯賦值,wire型只能用于組合邏輯賦值;
wire表示直通,即只要輸入有變化,輸出馬上出現(xiàn)結(jié)果,reg表示一定要有觸發(fā),輸出才會(huì)反映輸入。
2.4、FPGA 芯片內(nèi)有哪兩種存儲(chǔ)器資源?
塊RAM(BLOCK RAM):由存儲(chǔ)塊構(gòu)成,不占邏輯資源
分布式RAM:由查找表配置成的內(nèi)部存儲(chǔ)器,占邏輯資源
2.5、時(shí)鐘抖動(dòng)和時(shí)鐘偏移各自的概念?
時(shí)鐘抖動(dòng):時(shí)鐘“頻率”上的不一致。時(shí)鐘周期發(fā)生暫時(shí)性變化,導(dǎo)致時(shí)鐘邊沿來的早或者晚。和晶振或者PLL內(nèi)部電路有關(guān),與布線無關(guān)。
時(shí)鐘偏移:時(shí)鐘“相位”上的不一致。由于不同的布線長度導(dǎo)致同一個(gè)時(shí)鐘信號(hào)到達(dá)相鄰觸發(fā)器的時(shí)間不一致。
2.6、簡述同步復(fù)位和異步復(fù)位的區(qū)別?
同步復(fù)位:復(fù)位信號(hào)只有在時(shí)鐘上升沿到來時(shí),才能有效。
異步復(fù)位:無論時(shí)鐘沿是否到來,只要復(fù)位信號(hào)有效,就對(duì)系統(tǒng)進(jìn)行復(fù)位。
三、理論基礎(chǔ)題三
3.1、為什么觸發(fā)器要滿足建立時(shí)間和保持時(shí)間?
因?yàn)橛|發(fā)器內(nèi)部數(shù)據(jù)的形成是需要一定的時(shí)間的,如果不滿足建立和保持時(shí)間,觸發(fā)器將進(jìn)入亞穩(wěn)態(tài),導(dǎo)致輸出將不穩(wěn)定。
3.2、對(duì)于多位的異步信號(hào)如何進(jìn)行同步?
對(duì)于一位的異步信號(hào)可以使用“一位同步器進(jìn)行同步”(使用兩級(jí)觸發(fā)器)
對(duì)于多位的異步信號(hào),可以采用如下方法:
1:異步 FIFO
2:采用保持寄存器加握手信號(hào)的方法
3:特殊的具體應(yīng)用電路結(jié)構(gòu),根據(jù)應(yīng)用的不同而不同
3.3、流水線的設(shè)計(jì)方法和作用?
方法:如果某個(gè)信號(hào)可以分為若干步驟處理,而且整個(gè)數(shù)據(jù)處理過程是單項(xiàng)的,即沒有反饋運(yùn)算和迭代運(yùn)算,前一個(gè)步驟的輸出就是下一個(gè)步驟的輸入,可以考慮流水線設(shè)計(jì)來提高系統(tǒng)的頻率。流水線設(shè)計(jì)就是將組合邏輯系統(tǒng)地分割,并在各個(gè)部分(分級(jí))之間插入寄存器,并暫存中間數(shù)據(jù)的方法。
作用:將一個(gè)大操作分解成若干的小操作,每一步小操作的時(shí)間較小,所以能提高頻率,各小操作能并行執(zhí)行,所以能提高數(shù)據(jù)吞吐率(提高處理速度)。
3.4、什么是總線,有什么特點(diǎn)?
在 FPGA 中,總線(Bus)通常指的是一組物理連接,用于在 FPGA 內(nèi)部或 FPGA 與外部設(shè)備之間傳輸數(shù)據(jù)或控制信號(hào)。
特點(diǎn)主要包括:
1.并行傳輸:FPGA 中的總線通常采用并行傳輸方式,即同時(shí)傳輸多個(gè)二進(jìn)制信號(hào),以實(shí)現(xiàn)高速數(shù)據(jù)傳輸。
2.多設(shè)備共享:FPGA 中的總線可以連接多個(gè)設(shè)備,這些設(shè)備可以共享同一個(gè)總線,以實(shí)現(xiàn)設(shè)備之間的通信和數(shù)據(jù)交換。
3.時(shí)序控制:FPGA 中的總線通常需要滿足一定的時(shí)序要求,需要進(jìn)行合理的時(shí)序控制,以確??偩€的穩(wěn)定性和正確性。
4.資源共享:FPGA 中的總線可以實(shí)現(xiàn)資源共享,即多個(gè)模塊可以使用同一個(gè)總線進(jìn)行數(shù)據(jù)傳輸,從而減少硬件資源的使用,提高資源利用率。
5.可編程性:FPGA 中的總線具有很高的可編程性,可以根據(jù)不同的應(yīng)用需求進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),以適應(yīng)不同的硬件環(huán)境和應(yīng)用場景。
3.5、什么是高阻態(tài)?
高阻態(tài)這是一個(gè)數(shù)字電路里常見的術(shù)語,指的是電路的一種輸出狀態(tài),既不是高電平也不是低電平,如果高阻態(tài)再輸入下一級(jí)電路的話,對(duì)下級(jí)電路無任何影響,和沒接一樣,如果用萬用表測的話有可能是高電平也有可能是低電平,隨它后面接的東西定的。
3.6、FPGA 基本設(shè)計(jì)流程?
原理圖/HDL文本輸入→ 功能仿真 →綜合→適配→時(shí)序仿真→編程下載→硬件測試。
四、理論基礎(chǔ)題四
4.1、串行接口和并行接口的區(qū)別?
串行接口是數(shù)據(jù)線一根線,通過串行協(xié)議傳輸數(shù)據(jù),比如 UART、IIC、SPI
并行接口是一個(gè)數(shù)據(jù)在多根數(shù)據(jù)線并行傳輸,比如 RGB888。
4.2、時(shí)序設(shè)計(jì)的實(shí)質(zhì)?
滿足每一個(gè)觸發(fā)器的建立/保持時(shí)間。
4.3、解釋一下什么是 UART?
UART是通用異步收發(fā)器的英文縮寫,俗稱串口。作為常用的三大低速總線(UART、SPI、IIC)之一,在設(shè)計(jì)眾多通信接口和調(diào)試時(shí)占有重要地位。
物理層:信號(hào)引腳主要有2種,發(fā)送端TXD和接收端RXD。使用的通信方式為異步通信。通信方向?yàn)槿p工。
通信協(xié)議:數(shù)據(jù)格式和數(shù)據(jù)速率。
數(shù)據(jù)格式:空閑為高電平,起始位是低電平,之后是6-8位的數(shù)據(jù)位,之后是一位校驗(yàn)位和停止位,停止位。
數(shù)據(jù)速率:波特率:9600、19200、38400、57600、115200bit/s。
4.4、波特率與比特率的區(qū)別?
比特率:每秒傳輸多少個(gè)比特(二進(jìn)制數(shù))
波特率:每秒傳輸多少個(gè)碼元(可以用一個(gè)二進(jìn)制數(shù)表示一個(gè)碼元,也可以用一個(gè)多進(jìn)制數(shù)來表示一個(gè)碼元)
4.5、格雷碼的作用
相鄰的兩個(gè)二進(jìn)制之間可能有多個(gè)bit位同時(shí)進(jìn)行跳變,在電路邏輯上的表現(xiàn)就是輸入的兩個(gè)信號(hào)同時(shí)向相反的邏輯電平進(jìn)行跳變,也就是競爭現(xiàn)象,由于競爭會(huì)導(dǎo)致電路出現(xiàn)競爭冒險(xiǎn),輸出端會(huì)產(chǎn)生毛刺,進(jìn)而影響后續(xù)電路的運(yùn)行。而采用格雷碼(相鄰兩個(gè)格雷碼只有一個(gè)bit位發(fā)生變化)可以消除這種毛刺。格雷碼屬于一種可靠性編碼,是一種錯(cuò)誤最小化的編碼方式。
定義:在一組數(shù)的編碼中,若任意兩個(gè)相鄰的代碼只有一位二進(jìn)制數(shù)不同,則稱這種編碼為格雷碼(Gray Code),另外由于最大數(shù)與最小數(shù)之間也僅一位數(shù)不同,即“首尾相連”,因此又稱循環(huán)碼或反射碼。
特點(diǎn):格雷碼是一種具有反射特性和循環(huán)特性的單步自補(bǔ)碼
1、反射和自補(bǔ)特性使得對(duì)其進(jìn)行求反操作也非常方便
2、循環(huán)和單步特性消除了隨機(jī)取數(shù)時(shí)出現(xiàn)重大錯(cuò)誤的可能
4.6、FPGA與單片機(jī)的區(qū)別是什么?
五、理論基礎(chǔ)題五
5.1、同步電路和異步電路的區(qū)別?
同步電路:存儲(chǔ)電路中所有觸發(fā)器的時(shí)鐘輸入端都接同一個(gè)時(shí)鐘脈沖源,因而所有觸發(fā)器的狀態(tài)的變化都與所加的時(shí)鐘脈沖信號(hào)同步。
異步電路:電路沒有統(tǒng)一的時(shí)鐘,有些觸發(fā)器的時(shí)鐘輸入端與時(shí)鐘脈沖源相連,只有這些觸發(fā)器的狀態(tài)變化與時(shí)鐘脈沖同步,而其他的觸發(fā)器的狀態(tài)變化不與時(shí)鐘脈沖同步。
5.2、localparam、parameter 和defparam 的區(qū)別?
localparam只能在該文件中使用,無法進(jìn)行參數(shù)傳遞。
parameter 用于定義一個(gè)常量,可以在實(shí)例化中進(jìn)行參數(shù)傳遞。
defparam用來修改parameter中定義的常量。
5.3、HDL語言的層次概念?
系統(tǒng)級(jí),功能級(jí)/算法級(jí),行為級(jí),RTL 級(jí)(寄存器傳輸級(jí)),門級(jí),開關(guān)級(jí)
5.4、FPGA設(shè)計(jì)中如何實(shí)現(xiàn)同步時(shí)序電路的延時(shí)?
對(duì)于比較大的和特殊要求的延時(shí),一般通過高速時(shí)鐘產(chǎn)生計(jì)數(shù)器,通過計(jì)數(shù)器來控制延時(shí);
對(duì)于比較小的延時(shí),可以通過觸發(fā)器打一拍,不過這樣只能延遲一個(gè)時(shí)鐘周期。
5.5、Quartus編譯器編譯FPGA工程最終生產(chǎn)兩種不同用途的文件?
sof和pof.
sof是 SRAM Object下載到FPGA中,斷電丟失。
pof是 Programmer Object下載到配置芯片中,上電重新配置。
六、理論基礎(chǔ)題六
6.1、SRAM、DRAM、ROM、EEPROM、DDR、FLASH的區(qū)別?
SRAM (Static Random-Access Memory):SRAM是一種靜態(tài)隨機(jī)存取存儲(chǔ)器,它用于高速緩存和寄存器等需要快速存取的應(yīng)用。SRAM的數(shù)據(jù)存儲(chǔ)是基于觸發(fā)器的,它不需要刷新操作,讀寫速度快,但相對(duì)較昂貴,容量較小。
DRAM (Dynamic Random-Access Memory):DRAM是一種動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,它用于主存儲(chǔ)器等大容量存儲(chǔ)需求的應(yīng)用。DRAM的數(shù)據(jù)存儲(chǔ)是基于電容的,需要定期刷新操作來保持?jǐn)?shù)據(jù)的有效性。DRAM相對(duì)便宜,但讀寫速度較慢。
ROM (Read-Only Memory):ROM是一種只讀存儲(chǔ)器,其中存儲(chǔ)的數(shù)據(jù)在制造過程中被編程,并且在正常操作期間無法被修改。ROM用于存儲(chǔ)固定的程序代碼和數(shù)據(jù),例如啟動(dòng)程序和固件等。
EEPROM (Electrically Erasable Programmable Read-Only Memory):EEPROM是一種電可擦除可編程只讀存儲(chǔ)器,它可以通過電信號(hào)擦除和重新編程。與ROM不同,EEPROM可以被多次擦除和編程,因此它常用于存儲(chǔ)需要經(jīng)常更新的數(shù)據(jù),例如BIOS設(shè)置和用戶數(shù)據(jù)等。
DDR (Double Data Rate):DDR是一種內(nèi)存技術(shù)標(biāo)準(zhǔn),用于提高DRAM的數(shù)據(jù)傳輸速率。DDR內(nèi)存在每個(gè)時(shí)鐘周期內(nèi)能進(jìn)行兩次數(shù)據(jù)傳輸,相比于傳統(tǒng)的SDR (Single Data Rate)內(nèi)存,DDR內(nèi)存具有更高的帶寬和性能。
FLASH:FLASH是一種非易失性存儲(chǔ)器,類似于EEPROM,但它可以同時(shí)擦除存儲(chǔ)塊中的大量數(shù)據(jù)。FLASH存儲(chǔ)器通常用于存儲(chǔ)固件、操作系統(tǒng)和用戶數(shù)據(jù)等。它的特點(diǎn)是擦寫速度較慢,但具有較大的存儲(chǔ)密度和較低的成本。
總結(jié):
SRAM和DRAM是不同類型的隨機(jī)存取存儲(chǔ)器,SRAM適用于高速緩存和寄存器等需要快速訪問的場景,而DRAM適用于主存儲(chǔ)器等大容量存儲(chǔ)需求的場景。
ROM是只讀存儲(chǔ)器,其中的數(shù)據(jù)在制造過程中被編程,無法修改。
EEPROM是電可擦除可編程只讀存儲(chǔ)器,可以多次擦除和編程,用于存儲(chǔ)需要經(jīng)常更新的數(shù)據(jù)。
DDR是一種內(nèi)存技術(shù)標(biāo)準(zhǔn),用于提高DRAM的數(shù)據(jù)傳輸速率。
FLASH是一種非易失性存儲(chǔ)器,擦寫速度較慢,但具有較大的存儲(chǔ)密度和較低的成本,常用于存儲(chǔ)固件和用戶數(shù)據(jù)。
6.2、時(shí)序約束的概念和基本策略?
時(shí)序約束(Timing constraints)是在數(shù)字電路設(shè)計(jì)中使用的一種技術(shù),用于確保電路的時(shí)序性能符合設(shè)計(jì)要求。時(shí)序約束定義了各種信號(hào)之間的時(shí)間關(guān)系,包括時(shí)鐘周期、延遲、時(shí)序路徑等,以保證電路在正確的時(shí)間窗口內(nèi)響應(yīng)和傳輸數(shù)據(jù)。
周期約束、偏移約束、靜態(tài)時(shí)序路徑約束和附加約束是在電子設(shè)計(jì)自動(dòng)化(EDA)中常用的約束類型,用于確保設(shè)計(jì)在實(shí)際實(shí)現(xiàn)中滿足特定的時(shí)序要求和功能需求。
周期約束(Timing Constraints):周期約束用于定義時(shí)鐘信號(hào)的頻率和時(shí)序要求。它指定了時(shí)鐘周期的最小或最大時(shí)間限制,以確保數(shù)據(jù)在時(shí)鐘邊沿之間正確傳輸。周期約束還可以包括設(shè)置時(shí)鐘占空比(duty cycle)和時(shí)鐘延遲等詳細(xì)要求。
偏移約束(Delay Constraints):偏移約束用于定義數(shù)據(jù)路徑上的延遲要求。它指定從輸入到輸出的最大或最小傳播延遲限制,以確保數(shù)據(jù)在正確的時(shí)間到達(dá)目標(biāo)。偏移約束可以應(yīng)用于時(shí)序路徑,以確保數(shù)據(jù)在特定的時(shí)鐘邊沿之前或之后到達(dá)。
靜態(tài)時(shí)序路徑約束(Static Timing Path Constraints):靜態(tài)時(shí)序路徑約束用于定義數(shù)據(jù)路徑中的最大延遲和最小延遲。它指定了信號(hào)從一個(gè)設(shè)計(jì)元素(如寄存器或邏輯門)到另一個(gè)設(shè)計(jì)元素的傳播延遲限制。靜態(tài)時(shí)序路徑約束通常用于時(shí)序分析和優(yōu)化,以確保設(shè)計(jì)在特定的時(shí)鐘頻率下能夠滿足時(shí)序要求。
附加約束(Additional Constraints):附加約束是一種自定義的約束類型,用于滿足特定的功能
要求或設(shè)計(jì)約束。它可以包括電源和地連接規(guī)則、時(shí)鐘域劃分規(guī)則、引腳分配規(guī)則、時(shí)鐘和數(shù)據(jù)相關(guān)性規(guī)則等。附加約束通常是根據(jù)設(shè)計(jì)規(guī)范、硬件平臺(tái)或特定的應(yīng)用需求定義的。
6.3、i2c總線上為什么要用上拉電阻?
通過在SDA和SCL上分別連接上拉電阻,可以確保在空閑狀態(tài)下信號(hào)線維持高電平。因此,通過使用上拉電阻,可以確保I2C總線上的信號(hào)線在空閑狀態(tài)下保持高電平,提供穩(wěn)定的通信環(huán)境,避免信號(hào)干擾和通信錯(cuò)誤。
6.4、收發(fā)數(shù)據(jù)的時(shí)候,LSB MSB是什么意思?
LSB(Least Significant Bit)表示低位先發(fā)。
MSB(Most Significant Bit)表示高位先發(fā)。
6.5、異步串口校驗(yàn)位的奇、偶校驗(yàn)的原理?
奇校驗(yàn):數(shù)據(jù)位和校驗(yàn)位中“1”的個(gè)數(shù)為奇數(shù)個(gè)。
偶檢驗(yàn):數(shù)據(jù)位和校驗(yàn)位中“1”的個(gè)數(shù)為偶數(shù)個(gè)。
七、理論基礎(chǔ)題七
7.1、UART、IIC、SPI 三大協(xié)議的區(qū)別?
7.2、簡單說明FIFO 和RAM 的異同?
FIFO : 先入先出,先進(jìn)去的數(shù)據(jù)先出來。
RAM : 讀出的數(shù)據(jù)順序跟寫入數(shù)據(jù)順序不一致,可以向 RAM 中的任意位置寫入數(shù)據(jù),也可以讀取任意的位置的數(shù)據(jù)。
7.3、相對(duì)ARM、DSP 等處理器,談?wù)凢PGA 具有哪些優(yōu)勢?
ARM 和 DSP 都是處理器,需要軟件代碼在其中運(yùn)行才能工作,也就是我們常說的CPU,只有 CPU 而沒有程序,這個(gè)系統(tǒng)是不能工作的。而程序是順序執(zhí)行的,所以 ARM和 DSP 的工作速度是不可能太快的。而 FPGA 是個(gè)純硬件,內(nèi)部沒有代碼,一旦完成配置(只需要在上電時(shí)配置一次),就可以快速工作,內(nèi)部各個(gè)模塊之間沒有順序問題,是同時(shí)工作的,所以工作速度可以很快。
因此,F(xiàn)PGA 常用于要求工作速度快,而 ARM 或者 DSP 在工作速度上滿足不了應(yīng)用需求的場合。具備 1.設(shè)計(jì)靈活 2.兼容性強(qiáng) 3.適用性強(qiáng)等優(yōu)勢
7.4、 格雷碼與二進(jìn)制碼之間的相互轉(zhuǎn)換?
7.5、IP 核中的RAM 分為哪幾類?他們之間有什么不同?
單端口 RAM 和雙端口 RAM,其中雙端口 RAM 又分為簡單雙端口 RAM 和真正雙端口 RAM。
對(duì)于單端口 RAM,讀寫操作共用一組地址線,讀寫操作不能同時(shí)進(jìn)行;
對(duì)于簡單雙端口 RAM,讀操作和寫操作有專用地址端口(一個(gè)讀端口和一個(gè)寫端口),即寫端口只能寫不能讀,而讀端口只能讀不能寫;
對(duì)于真正雙端口 RAM,有兩個(gè)地址端口用于讀寫操作(兩個(gè)讀/寫端口),即兩個(gè)端口都可以進(jìn)行讀寫。
八、理論基礎(chǔ)題八
8.1、串口根據(jù)電氣標(biāo)準(zhǔn)大致可分為哪些?各自之間的區(qū)別?
RS-232(Recommended Standard 232):RS-232是最早出現(xiàn)的串口標(biāo)準(zhǔn)之一,常用于連接計(jì)算機(jī)和外部設(shè)備。它使用正負(fù)電平表示數(shù)據(jù),具有較長的傳輸距離和較低的傳輸速率。RS-232串口通常使用DB-25或DB-9連接器。
RS-422(Recommended Standard 422):RS-422是一種差分信號(hào)傳輸?shù)拇跇?biāo)準(zhǔn),常用于需要較長傳輸距離和高抗干擾性能的應(yīng)用。RS-422可以支持多點(diǎn)通信,具有較高的傳輸速率和更好的噪聲抑制能力。RS-422串口通常使用DB-25連接器。
RS-485(Recommended Standard 485):RS-485也是一種差分信號(hào)傳輸?shù)拇跇?biāo)準(zhǔn),與
RS-422類似,但支持更高的傳輸速率。RS-485同樣適用于多點(diǎn)通信,并具有更好的抗干擾性能。RS-485串口通常使用DB-9或RJ-45連接器。
電氣特性:RS-232使用單端信號(hào)傳輸,而RS-422和RS-485使用差分信號(hào)傳輸,差分信號(hào)具有更好的抗干擾性能和傳輸距離。
傳輸距離:RS-232的傳輸距離較短,通常在50英尺(15米)左右,而RS-422和RS-485可以達(dá)到數(shù)千英尺(數(shù)百米/1200米)的傳輸距離。
傳輸速率:RS-232通常支持較低的傳輸速率,最高可達(dá)115.2 kbps,而RS-422和RS-485可以支持更高的傳輸速率,最高可達(dá)10 Mbps或更高。
連接器類型:RS-232通常使用DB-25或DB-9連接器,而RS-422和RS-485可以使用DB-25、 DB-9或RJ-45連接器。
8.2、在FPGA設(shè)計(jì)中,跨時(shí)鐘域同步一般有哪些方法?具體是如何操作的?
一般解決跨時(shí)鐘域有以下幾種方法:
(1)多級(jí)寄存,一般針對(duì)單bit控制信號(hào)跨越兩個(gè)異步時(shí)鐘域傳輸,可以采用多級(jí)寄存器。
(2)異步FIFO/RAM緩存,一般用于跨時(shí)鐘域傳輸數(shù)據(jù),寫端和讀端分別對(duì)應(yīng)兩個(gè)時(shí)鐘域,由空/滿信號(hào)控制讀寫過程,實(shí)現(xiàn)數(shù)據(jù)的跨域傳輸。
(3)握手信號(hào)。
8.3、簡述IIC總線的通信機(jī)制(總線結(jié)構(gòu)、通信協(xié)議等相關(guān)概念)?
IIC(I2C,Inter-Integrated Circuit)即集成電路總線,是一種兩線式串行總線,由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成通信線路,既可用于發(fā)送數(shù)據(jù),也可接收數(shù)據(jù),是一種半雙工通信協(xié)議??偩€上的主設(shè)備與從設(shè)備之間以字節(jié)(8 位)為單位進(jìn)行雙向的數(shù)據(jù)傳輸。總線上的每一個(gè)設(shè)備都可以作為主設(shè)備或從設(shè)備,而且每一個(gè)設(shè)備都會(huì)對(duì)應(yīng)一個(gè)唯一的地址(可以從I2C器件數(shù)據(jù)手冊(cè)得知),主從設(shè)備之間就是通過這個(gè)地址來確定與哪個(gè)器件進(jìn)行通信。
通信協(xié)議:
空閑狀態(tài):I2C總線的SDA和SCL兩條信號(hào)線同時(shí)處于高電平時(shí),規(guī)定為總線的空閑狀態(tài)。此時(shí)各個(gè)器件的輸出級(jí)場效應(yīng)管均處在截止?fàn)顟B(tài),即釋放總線,由兩條信號(hào)線各自的上拉電阻把電平拉高。
起始信號(hào):在SCL保持高電平期間,SDA的電平被拉低,稱為 I2C 總線總線的起始信號(hào),標(biāo)志著一次數(shù)據(jù)傳輸開始。起始信號(hào)由主機(jī)主動(dòng)建立的,在建立該信號(hào)之前 I2C總線必須處于空閑狀態(tài)。
數(shù)據(jù)傳輸:在 I2C 總線上傳送的每一位數(shù)據(jù)都有一個(gè)時(shí)鐘脈沖相對(duì)應(yīng)(或同步控制),即在 SCL
串行時(shí)鐘的配合下,在 SDA上逐位地串行傳送每一位數(shù)據(jù)。進(jìn)行數(shù)據(jù)傳送時(shí),在 SCL 的高電平期間, SDA 上的電平必須保持穩(wěn)定,只有在 SCL為低電平期間,才允許 SDA上的電平改變狀態(tài)。即數(shù)據(jù)在SCL的上升沿到來之前就必須準(zhǔn)備好,并在在下降沿到來之前必須保持穩(wěn)定。
應(yīng)答信號(hào):I2C總線上的所有數(shù)據(jù)都是以字節(jié)傳送的,發(fā)送端每發(fā)送一個(gè)字節(jié),就必須在第9個(gè)SCL脈沖期間釋放SDA,由接收端反饋一個(gè)應(yīng)答信號(hào)。應(yīng)答信號(hào)為低電平時(shí),稱為有效應(yīng)答位(ACK),表示接收端成功接收了該字節(jié);應(yīng)答信號(hào)為高電平時(shí),稱為非應(yīng)答位(NACK),表示接收端接收該字節(jié)失敗。
停止信號(hào):在SCL保持高電平期間,SDA被釋放,返回高電平,稱為I2C總線的停止信號(hào),標(biāo)志著一次數(shù)據(jù)傳輸?shù)慕K止。停止信號(hào)由主機(jī)主動(dòng)建立的,建立該信號(hào)之后,I2C總線將返回空閑狀態(tài)。
8.4、學(xué)習(xí)中使用到的eeprom/flash的器件名分別是什么?各自的存儲(chǔ)容量是多少?具體如何構(gòu)成?
EEPROM:24LC04B;
容量:4 kbit ;256 x 8 x 2 = 4096 bit 。
FLASH:M25P16。
總?cè)萘繛?6Mbit(2M*8);
總共有32個(gè)扇區(qū),每個(gè)扇區(qū)256頁,每頁256個(gè)字節(jié)。
32x256x256=2097152=2M字節(jié)。文章來源:http://www.zghlxwxcb.cn/news/detail-719638.html
總結(jié)
未完待續(xù)文章來源地址http://www.zghlxwxcb.cn/news/detail-719638.html
到了這里,關(guān)于FPGA面試題整理1的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!