數字IC設計工程師筆試面試經典100題-有答案

轉自知乎答主ictown_數字IC設計工程師筆試面試經典100題-有答案-陳恩

1:什麼是同步邏輯和異步邏輯?(漢王)
同步邏輯是時鐘之間有固定的因果關係。異步邏輯是各時鐘之間沒有固定的因果關係。
同步時序邏輯電路的特點:各觸發器的時鐘端全部連接在一起,並接在系統時鐘端,只有當時鍾脈衝到來時,電路的狀態才能改變。改變後的狀態將一直保持到下一個時鐘脈衝的到來,此時無論外部輸入 x 有無變化,狀態表中的每個狀態都是穩定的。
異步時序邏輯電路的特點:電路中除可以使用帶時鐘的觸發器外,還可以使用不帶時鐘的觸發器和延遲元件作爲存儲元件,電路中沒有統一的時鐘,電路狀態的改變由外部輸入的變化直接引起。

2:同步電路和異步電路的區別:
同步電路:存儲電路中所有觸發器的時鐘輸入端都接同一個時鐘脈衝源,因而所有觸發器的狀態的變化都與所加的時鐘脈衝信號同步。
異步電路:電路沒有統一的時鐘,有些觸發器的時鐘輸入端與時鐘脈衝源相連,只有這些觸發器的狀態變化與時鐘脈衝同步,而其他的觸發器的狀態變化不與時鐘脈衝同步。

3:時序設計的實質:
時序設計的實質就是滿足每一個觸發器的建立/保持時間的要求。

4:建立時間與保持時間的概念?
建立時間:觸發器在時鐘上升沿到來之前,其數據輸入端的數據必須保持不變的最小時間。
保持時間:觸發器在時鐘上升沿到來之後,其數據輸入端的數據必須保持不變的最小時間。

5:爲什麼觸發器要滿足建立時間和保持時間?
因爲觸發器內部數據的形成是需要一定的時間的,如果不滿足建立和保持時間,觸發器將進入亞穩態,進入亞穩態後觸發器的輸出將不穩定,在0和1之間變化,這時需要經過一個恢復時間,其輸出才能穩定,但穩定後的值並不一定是你的輸入值。這就是爲什麼要用兩級觸發器來同步異步輸入信號。這樣做可以防止由於異步輸入信號對於本級時鐘可能不滿足建立保持時間而使本級觸發器產生的亞穩態傳播到後面邏輯中,導致亞穩態的傳播。

(比較容易理解的方式)換個方式理解:需要建立時間是因爲觸發器的D端像一個鎖存器在接受數據,爲了穩定的設置前級門的狀態需要一段穩定時間;需要保持時間是因爲在時鐘沿到來之後,觸發器要通過反饋來鎖存狀態,從後級門傳到前級門需要時間。

6:什麼是亞穩態?爲什麼兩級觸發器可以防止亞穩態傳播?
這也是一個異步電路同步化的問題。亞穩態是指觸發器無法在某個規定的時間段內到達一個可以確認的狀態。使用兩級觸發器來使異步電路同步化的電路其實叫做“一位同步器”,他只能用來對一位異步信號進行同步。兩級觸發器可防止亞穩態傳播的原理:假設第一級觸發器的輸入不滿足其建立保持時間,它在第一個脈衝沿到來後輸出的數據就爲亞穩態,那麼在下一個脈衝沿到來之前,其輸出的亞穩態數據在一段恢復時間後必須穩定下來,而且穩定的數據必須滿足第二級觸發器的建立時間,如果都滿足了,在下一個脈衝沿到來時,第二級觸發器將不會出現亞穩態,因爲其輸入端的數據滿足其建立保持時間。同步器有效的條件:第一級觸發器進入亞穩態後的恢復時間 + 第二級觸發器的建立時間 < = 時鐘週期
更確切地說,輸入脈衝寬度必須大於同步時鐘週期與第一級觸發器所需的保持時間之和。最保險的脈衝寬度是兩倍同步時鐘週期。 所以,這樣的同步電路對於從較慢的時鐘域來的異步信號進入較快的時鐘域比較有效,對於進入一個較慢的時鐘域,則沒有作用 。

7:系統最高速度計算(最快時鐘頻率)和流水線設計思想:
同步電路的速度是指同步系統時鐘的速度,同步時鐘愈快,電路處理數據的時間間隔越短,電路在單位時間內處理的數據量就愈大。假設Tco是觸發器的輸入數據被時鐘打入到觸發器到數據到達觸發器輸出端的延時時間(Tco=Tsetpup+Thold);Tdelay是組合邏輯的延時;Tsetup是觸發器的建立時間。假設數據已被時鐘打入D觸發器,那麼數據到達第一個觸發器的Q輸出端需要的延時時間是Tco,經過組合邏輯的延時時間爲Tdelay,然後到達第二個觸發器的D端,要希望時鐘能在第二個觸發器再次被穩定地打入觸發器,則時鐘的延遲必須大於Tco+Tdelay+Tsetup,也就是說最小的時鐘週期Tmin =Tco+Tdelay+Tsetup,即最快的時鐘頻率Fmax =1/Tmin。FPGA開發軟件也是通過這種方法來計算系統最高運行速度Fmax。因爲Tco和Tsetup是由具體的器件工藝決定的,故設計電路時只能改變組合邏輯的延遲時間Tdelay,所以說縮短觸發器間組合邏輯的延時時間是提高同步電路速度的關鍵所在。由於一般同步電路都大於一級鎖存,而要使電路穩定工作,時鐘週期必須滿足最大延時要求。故只有縮短最長延時路徑,才能提高電路的工作頻率。可以將較大的組合邏輯分解爲較小的N塊,通過適當的方法平均分配組合邏輯,然後在中間插入觸發器,並和原觸發器使用相同的時鐘,就可以避免在兩個觸發器之間出現過大的延時,消除速度瓶頸,這樣可以提高電路的工作頻率。這就是所謂"流水線"技術的基本設計思想,即原設計速度受限部分用一個時鐘週期實現,採用流水線技術插入觸發器後,可用N個時鐘週期實現,因此係統的工作速度可以加快,吞吐量加大。注意,流水線設計會在原數據通路上加入延時,另外硬件面積也會稍有增加。

8:時序約束的概念和基本策略?
時序約束主要包括週期約束,偏移約束,靜態時序路徑約束三種。通過附加時序約束可以綜合佈線工具調整映射和佈局佈線,使設計達到時序要求。
附加時序約束的一般策略是先附加全局約束,然後對快速和慢速例外路徑附加專門約束。附加全局約束時,首先定義設計的所有時鐘,對各時鐘域內的同步元件進行分組,對分組附加週期約束,然後對FPGA/CPLD輸入輸出PAD附加偏移約束、對全組合邏輯的PAD TO PAD路徑附加約束。附加專門約束時,首先約束分組之間的路徑,然後約束快、慢速例外路徑和多週期路徑,以及其他特殊路徑。

9:附加約束的作用?
1:提高設計的工作頻率(減少了邏輯和佈線延時);2:獲得正確的時序分析報告;(靜態時序分析工具以約束作爲判斷時序是否滿足設計要求的標準,因此要求設計者正確輸入約束,以便靜態時序分析工具可以正確的輸出時序報告)3:指定FPGA/CPLD的電氣標準和引腳位置。

10:FPGA設計工程師努力的方向:
SOPC,高速串行I/O,低功耗,可靠性,可測試性和設計驗證流程的優化等方面。
隨着芯片工藝的提高,芯片容量、集成度都在增加,FPGA設計也朝着高速、高度集成、低功耗、高可靠性、高可測、可驗證性發展。芯片可測、可驗證,正在成爲複雜設計所必備的條件,儘量在上板之前查出bug,將發現bug的時間提前,這也是一些公司花大力氣設計仿真平臺的原因。另外隨着單板功能的提高、成本的壓力,低功耗也逐漸進入FPGA設計者的考慮範圍,完成相同的功能下,考慮如何能夠使芯片的功耗最低,據說altera、xilinx都在根據自己的芯片特點整理如何降低功耗的文檔。高速串行IO的應用,也豐富了FPGA的應用範圍,象xilinx的v2pro中的高速鏈路也逐漸被應用。

11:對於多位的異步信號如何進行同步?
對以一位的異步信號可以使用“一位同步器進行同步”(使用兩級觸發器),而對於多位的異步信號,可以採用如下方法:1:可以採用保持寄存器加握手信號的方法(多數據,控制,地址);2:特殊的具體應用電路結構,根據應用的不同而不同;3:異步FIFO。(最常用的緩存單元是DPRAM)

12:FPGA和CPLD的區別?
CPLDFPGA內部結構Product term(基於乘積項)Look up Table(基於查找表)程序存儲內部EEPROM/FLASHSRAM,外掛EEPROM資源類型組合邏輯資源豐富時序邏輯資源豐富集成度低高使用場合完成控制邏輯能完成比較複雜的算法速度慢快 ??其他資源-PLL、RAM和乘法器等保密性可加密一般不能保密

13:鎖存器(latch)和觸發器(flip-flop)區別?
電平敏感的存儲器件稱爲鎖存器。可分爲高電平鎖存器和低電平鎖存器,用於不同時鐘之間的信號同步。
有交叉耦合的門構成的雙穩態的存儲原件稱爲觸發器。分爲上升沿觸發和下降沿觸發。可以認爲是兩個不同電平敏感的鎖存器串連而成。前一個鎖存器決定了觸發器的建立時間,後一個鎖存器則決定了保持時間。

14:FPGA芯片內有哪兩種存儲器資源?
FPGA芯片內有兩種存儲器資源:一種叫BLOCK RAM,另一種是由LUT配置成的內部存儲器(也就是分佈式RAM)。BLOCK RAM由一定數量固定大小的存儲塊構成的,使用BLOCK RAM資源不佔用額外的邏輯資源,並且速度快。但是使用的時候消耗的BLOCK RAM資源是其塊大小的整數倍。

15:什麼是時鐘抖動?
時鐘抖動是指芯片的某一個給定點上時鐘週期發生暫時性變化,也就是說時鐘週期在不同的週期上可能加長或縮短。它是一個平均值爲0的平均變量。

16:FPGA設計中對時鐘的使用?(例如分頻等)
FPGA芯片有固定的時鐘路由,這些路由能有減少時鐘抖動和偏差。需要對時鐘進行相位移動或變頻的時候,一般不允許對時鐘進行邏輯操作,這樣不僅會增加時鐘的偏差和抖動,還會使時鐘帶上毛刺。一般的處理方法是採用FPGA芯片自帶的時鐘管理器如PLL,DLL或DCM,或者把邏輯轉換到觸發器的D輸入(這些也是對時鐘邏輯操作的替代方案)。

17:FPGA設計中如何實現同步時序電路的延時?
首先說說異步電路的延時實現:異步電路一半是通過加buffer、兩級與非門等來實現延時(我還沒用過所以也不是很清楚),但這是不適合同步電路實現延時的。在同步電路中,對於比較大的和特殊要求的延時,一半通過高速時鐘產生計數器,通過計數器來控制延時;對於比較小的延時,可以通過觸發器打一拍,不過這樣只能延遲一個時鐘週期。

18:FPGA中可以綜合實現爲RAM/ROM/CAM的三種資源及其注意事項?
三種資源:BLOCK RAM,觸發器(FF),查找表(LUT);
注意事項:
1:在生成RAM等存儲單元時,應該首選BLOCK RAM 資源;其原因有二:第一:使用BLOCK RAM等資源,可以節約更多的FF和4-LUT等底層可編程單元。使用BLOCK RAM可以說是“不用白不用”,是最大程度發揮器件效能,節約成本的一種體現;第二:BLOCK RAM是一種可以配置的硬件結構,其可靠性和速度與用LUT和REGISTER構建的存儲器更有優勢。
2:弄清FPGA的硬件結構,合理使用BLOCK RAM資源;
3:分析BLOCK RAM容量,高效使用BLOCK RAM資源;
4:分佈式RAM資源(DISTRIBUTE RAM)

19:Xilinx中與全局時鐘資源和DLL相關的硬件原語:
常用的與全局時鐘資源相關的Xilinx器件原語包括:IBUFG,IBUFGDS,BUFG,BUFGP,BUFGCE,BUFGMUX,BUFGDLL,DCM等。關於各個器件原語的解釋可以參考《FPGA設計指導準則》p50部分。

20:HDL語言的層次概念?
HDL語言是分層次的、類型的,最常用的層次概念有系統與標準級、功能模塊級,行爲級,寄存器傳輸級和門級。
系統級,算法級,RTL級(行爲級),門級,開關級

21:查找表的原理與結構?
查找表(look-up-table)簡稱爲LUT,LUT本質上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有 4位地址線的16x1的RAM。 當用戶通過原理圖或HDL語言描述了一個邏輯電路以後,PLD/FPGA開發軟件會自動計算邏輯電路的所有可能的結果,並把結果事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等於輸入一個地址進行查表,找出地址對應的內容,然後輸出即可

22:IC設計前端到後端的流程和EDA工具?
設計前端也稱邏輯設計,後端設計也稱物理設計,兩者並沒有嚴格的界限,一般涉及到與工藝有關的設計就是後端設計。
1:規格制定:客戶向芯片設計公司提出設計要求。
2:詳細設計:芯片設計公司(Fabless)根據客戶提出的規格要求,拿出設計解決方案和具體實現架構,劃分模塊功能。目前架構的驗證一般基於systemC語言,對價後模型的仿真可以使用systemC的仿真工具。例如:CoCentric和Visual Elite等。
3:HDL編碼:設計輸入工具:ultra ,visual VHDL等
4:仿真驗證:modelsim
5:邏輯綜合:synplify
6:靜態時序分析:synopsys的Prime Time
7:形式驗證:Synopsys的Formality.

23:寄生效應在IC設計中怎樣加以克服和利用(這是我的理解,原題好像是說,IC設計過
程中將寄生效應的怎樣反饋影響設計師的設計方案)?
所謂寄生效應就是那些溜進你的PCB並在電路中大施破壞、令人頭痛、原因不明的小故障。它們就是滲入高速電路中隱藏的寄生電容和寄生電感。其中包括由封裝引腳和印製線過長形成的寄生電感;焊盤到地、焊盤到電源平面和焊盤到印製線之間形成的寄生電容;通孔之間的相互影響,以及許多其它可能的寄生效應。
理想狀態下,導線是沒有電阻,電容和電感的。而在實際中,導線用到了金屬銅,它有一定的電阻率,如果導線足夠長,積累的電阻也相當可觀。兩條平行的導線,如果互相之間有電壓差異,就相當於形成了一個平行板電容器(你想象一下)。通電的導線周圍會形成磁場(特別是電流變化時),磁場會產生感生電場,會對電子的移動產生影響,可以說每條實際的導線包括元器件的管腳都會產生感生電動勢,這也就是寄生電感。
在直流或者低頻情況下,這種寄生效應看不太出來。而在交流特別是高頻交流條件下,影響就非常巨大了。根據復阻抗公式,電容、電感會在交流情況下會對電流的移動產生巨大阻礙,也就可以折算成阻抗。這種寄生效應很難克服,也難摸到。只能通過優化線路,儘量使用管腳短的SMT元器件來減少其影響,要完全消除是不可能的。

24:用flip-flop和logic-gate設計一個1位加法器,輸入carryin和current-stage,輸出carryout和next-stage?
carryout=carryin*current-stage;與門
next-stage=carryin’*current-stage+carryin*current-stage’; 與門,非門,或門(或者異或門)

module(clk,current-stage,carryin,next-stage,carryout);
input clk, current-stage,carryin;
output next-stage,carryout;

always@(posedge clk)
carryout<=carryin¤t-stage;
nextstage<=

25:設計一個自動飲料售賣機,飲料10分錢,硬幣有5分和10分兩種,並考慮找零,
1.畫出fsm(有限狀態機)
2.用verilog編程,語法要符合FPGA設計的要求
3.設計工程中可使用的工具及設計大致過程?
設計過程:
1、首先確定輸入輸出,A=1表示投入10分,B=1表示投入5分,Y=1表示彈出飲料,Z=1表示找零。
2、確定電路的狀態,S0表示沒有進行投幣,S1表示已經有5分硬幣。
3、畫出狀態轉移圖。

 

module sell(clk,rst,a,b,y,z);
input clk,rst,a,b;
output y,z;
parameter s0=0,s1=1;
reg state,next_state;

always@(posedge clk)
begin
if(!rst)
state<=s0;
else
state<=next_state;
end

always@(a or b or cstate)
begin
y=0;z=0;
case(state)
s0: if(a==1&&b==0) next_state=s1;
else if(a==0&&b==1)
begin
next_state=s0; y=1;
end
else
next_state=s0;

s1: if(a==1&&b==0)
begin
next_state=s0;y=1;
end
else if(a==0&&b==1)
begin
next_state=s0; y=1;z=1;
end
else
next_state=s0;
default: next_state=s0;
endcase
end
endmodule

 

擴展:設計一個自動售飲料機的邏輯電路。它的投幣口每次只能投入一枚五角或一元的硬幣。投入一元五角硬幣後給出飲料;投入兩元硬幣時給出飲料並找回五角。

1、 確定輸入輸出,投入一元硬幣A=1,投入五角硬幣B=1,給出飲料Y=1,找回五角Z=1;

2、 確定電路的狀態數,投幣前初始狀態爲S0,投入五角硬幣爲S1,投入一元硬幣爲S2。畫出轉該轉移圖,根據狀態轉移圖可以寫成Verilog代碼。

 

26:什麼是"線與"邏輯,要實現它,在硬件特性上有什麼具體要求?

線與邏輯是兩個輸出信號相連可以實現與的功能。在硬件上,要用oc門來實現,由於不用oc門可能使灌電流過大,而燒壞邏輯門. 同時在輸出端口應加一個上拉電阻。oc門就是集電極開路門。od門是漏極開路門。

27:什麼是競爭與冒險現象?怎樣判斷?如何消除?

在組合電路中,某一輸入變量經過不同途徑傳輸後,到達電路中某一匯合點的時間有先有後,這種現象稱競爭;由於競爭而使電路輸出發生瞬時錯誤的現象叫做冒險。(也就是由於競爭產生的毛刺叫做冒險)。

判斷方法:代數法(如果布爾式中有相反的信號則可能產生競爭和冒險現象);卡諾圖:有兩個相切的卡諾圈並且相切處沒有被其他卡諾圈包圍,就有可能出現競爭冒險;實驗法:示波器觀測;

解決方法:1:加濾波電容,消除毛刺的影響;2:加選通信號,避開毛刺;3:增加冗餘項消除邏輯冒險。

門電路兩個輸入信號同時向相反的邏輯電平跳變稱爲競爭;

由於競爭而在電路的輸出端可能產生尖峯脈衝的現象稱爲競爭冒險。

如果邏輯函數在一定條件下可以化簡成Y=A+A’或Y=AA’則可以判斷存在競爭冒險現象(只是一個變量變化的情況)。

消除方法,接入濾波電容,引入選通脈衝,增加冗餘邏輯

28:你知道那些常用邏輯電平?TTL與COMS電平可以直接互連嗎?

常用邏輯電平:TTL、CMOS、LVTTL、LVCMOS、ECL(Emitter Coupled Logic)、PECL(Pseudo/Positive Emitter Coupled Logic)、LVDS(Low Voltage Differential Signaling)、GTL(Gunning Transceiver Logic)、BTL(Backplane Transceiver Logic)、ETL(enhanced transceiver logic)、GTLP(Gunning Transceiver Logic Plus);RS232、RS422、RS485(12V,5V,3.3V);

也有一種答案是:常用邏輯電平:12V,5V,3.3V。

TTL和CMOS 不可以直接互連,由於TTL是在0.3-3.6V之間,而CMOS則是有在12V的有在5V的。CMOS輸出接到TTL是可以直接互連。TTL接到 CMOS需要在輸出端口加一上拉電阻接到5V或者12V。

用CMOS可直接驅動TTL;加上拉電阻後,TTL可驅動CMOS.

上拉電阻用途:

1、當TTL電路驅動COMS電路時,如果TTL電路輸出的高電平低於COMS電路的最低高電平(一般爲3.5V),這時就需要在TTL的輸出端接上拉電阻,以提高輸出高電平的值。

2、OC門電路必須加上拉電阻,以提高輸出的高電平值。

3、爲加大輸出引腳的驅動能力,有的單片機管腳上也常使用上拉電阻。

4、在COMS芯片上,爲了防止靜電造成損壞,不用的管腳不能懸空,一般接上拉電阻產生降低輸入阻抗,提供泄荷通路。

5、芯片的管腳加上拉電阻來提高輸出電平,從而提高芯片輸入信號的噪聲容限增強抗干擾能力。

6、提高總線的抗電磁干擾能力。管腳懸空就比較容易接受外界的電磁干擾。

7、長線傳輸中電阻不匹配容易引起反射波干擾,加上下拉電阻是電阻匹配,有效的抑制反射波干擾。

上拉電阻阻值的選擇原則包括:

1、從節約功耗及芯片的灌電流能力考慮應當足夠大;電阻大,電流小。

2、從確保足夠的驅動電流考慮應當足夠小;電阻小,電流大。

3、對於高速電路,過大的上拉電阻可能邊沿變平緩。綜合考慮以上三點,通常在1k到10k之間選取。對下拉電阻也有類似道理。

OC門電路必須加上拉電阻,以提高輸出的高電平值。

OC門電路要輸出“1”時才需要加上拉電阻不加根本就沒有高電平

在有時我們用OC門作驅動(例如控制一個 LED)灌電流工作時就可以不加上拉電阻

總之加上拉電阻能夠提高驅動能力。

29:IC設計中同步復位與異步復位的區別?

同步復位在時鐘沿變化時,完成復位動作。異步復位不管時鐘,只要復位信號滿足條件,就完成復位動作。異步復位對復位信號要求比較高,不能有毛刺,如果其與時鐘關係不確定,也可能出現亞穩態。

30:MOORE 與 MEELEY狀態機的特徵?

Moore 狀態機的輸出僅與當前狀態值有關, 且只在時鐘邊沿到來時纔會有狀態變化。

Mealy 狀態機的輸出不僅與當前狀態值有關, 而且與當前輸入值有關。

31:多時域設計中,如何處理信號跨時域?

不同的時鐘域之間信號通信時需要進行同步處理,這樣可以防止新時鐘域中第一級觸發器的亞穩態信號對下級邏輯造成影響。

信號跨時鐘域同步:當單個信號跨時鐘域時,可以採用兩級觸發器來同步;數據或地址總線跨時鐘域時可以採用異步FIFO來實現時鐘同步;第三種方法就是採用握手信號。

32:說說靜態、動態時序模擬的優缺點?

靜態時序分析是採用窮盡分析方法來提取出整個電路存在的所有時序路徑,計算信號在這些路徑上的傳播延時,檢查信號的建立和保持時間是否滿足時序要求,通過對最大路徑延時和最小路徑延時的分析,找出違背時序約束的錯誤。它不需要輸入向量就能窮盡所有的路徑,且運行速度很快、佔用內存較少,不僅可以對芯片設計進行全面的時序功能檢查,而且還可利用時序分析的結果來優化設計,因此靜態時序分析已經越來越多地被用到數字集成電路設計的驗證中。

動態時序模擬就是通常的仿真,因爲不可能產生完備的測試向量,覆蓋門級網表中的每一條路徑。因此在動態時序分析中,無法暴露一些路徑上可能存在的時序問題;

33:一個四級的Mux,其中第二級信號爲關鍵信號 如何改善timing.?

關鍵:將第二級信號放到最後輸出一級輸出,同時注意修改片選信號,保證其優先級未被修改。(爲什麼?)

34:給出一個門級的圖,又給了各個門的傳輸延時,問關鍵路徑是什麼,還問給出輸入, 使得輸出依賴於關鍵路徑?

關鍵路徑就是輸入到輸出延時最大的路徑,找到了關鍵路徑便能求得最大時鐘頻率。

35:爲什麼一個標準的倒相器中P管的寬長比要比N管的寬長比大?

和載流子有關,P管是空穴導電,N管是電子導電,電子的遷移率大於空穴,同樣的電場下,N管的電流大於P管,因此要增大P管的寬長比,使之對稱,這樣才能使得兩者上升時間下降時間相等、高低電平的噪聲容限一樣、充電放電的時間相等。

36:用mos管搭出一個二輸入與非門?

<數字電子技術基礎(第五版)> 92頁

與非門:上並下串 或非門:上串下並

 

37:畫出NOT,NAND,NOR的符號,真值表,還有transistor level(晶體管級)的電路?

<數字電子技術基礎(第五版)> 117頁—134頁

38:畫出CMOS的圖,畫出tow-to-one mux gate.(威盛VIA 2003.11.06 上海筆試試題) ?

Y=SA+S’B 利用與非門和反相器,進行變換後Y=((SA)’*(S’A)’)’,三個與非門,一個反相器。也可以用傳輸門來實現數據選擇器或者是異或門。

 

39:用一個二選一mux和一個inv實現異或?

其中:B連接的是地址輸入端,A和A非連接的是數據選擇端,F對應的的是輸出端,使能端固定接地置零(沒有畫出來).

Y=BA’+B’A

利用4選1實現F(x,y,z)=xz+yz'

F(x,y,z)=xyz+xy’z+xyz'+x’yz’=x’y’0+x’yz’+xy’z+xy1

Y=A’B’D0+A’BD1+AB’D2+ABD3

所以D0=0,D1=z’,D2=z,D3=1

40:畫出CMOS電路的晶體管級電路圖,實現Y=A*B+C(D+E).(仕蘭微電子)?

畫出Y=A*B+C的CMOS電路圖,畫出Y=A*B+C*D的CMOS電路圖。

利用與非門和或非門實現

Y=A*B+C(D+E)=((AB’)(CD)’(CE)’)’ 三個兩輸入與非門,一個三輸入與非門

Y=A*B+C=((AB)’C’) 一個反相器,兩個兩輸入與非門

Y=A*B+C*D=((AB)’(CD)’)’ 三個兩輸入與非門

41:用與非門等設計全加法器?(華爲)

《數字電子技術基礎》192頁。

 

通過摩根定律化成用與非門實現。

42:A,B,C,D,E進行投票,多數服從少數,輸出是F(也就是如果A,B,C,D,E中1的個數比0 多,那麼F輸出爲1,否則F爲0),用與非門實現,輸入數目沒有限制?(與非-與非形式)

先畫出卡諾圖來化簡,化成與或形式,再兩次取反便可。

43:畫出一種CMOS的D鎖存器的電路圖和版圖?

 

也可以將右圖中的與非門和反相器用CMOS電路畫出來。

44:LATCH和DFF的概念和區別?

45:latch與register的區別,爲什麼現在多用register.行爲級描述中latch如何產生的?

latch是電平觸發,register是邊沿觸發,register在同一時鐘邊沿觸發下動作,符合同步電路的設計思想,而latch則屬於異步電路設計,往往會導致時序分析困難,不適當的應用latch則會大量浪費芯片資源。

46:用D觸發器做個二分頻的電路?畫出邏輯電路?

module div2(clk,rst,clk_out);

input clk,rst;

output reg clk_out;

always@(posedge clk)

begin

if(!rst)

clk_out <=0;

else

clk_out <=~ clk_out;

end

endmodule

現實工程設計中一般不採用這樣的方式來設計,二分頻一般通過DCM來實現。通過DCM得到的分頻信號沒有相位差。

 

或者是從Q端引出加一個反相器。

47:什麼是狀態圖?

狀態圖是以幾何圖形的方式來描述時序邏輯電路的狀態轉移規律以及輸出與輸入的關係。

48:用你熟悉的設計方式設計一個可預置初值的7進制循環計數器,15進制的呢?

module counter7(clk,rst,load,data,cout);

input clk,rst,load;

input [2:0] data;

output reg [2:0] cout;

always@(posedge clk)

begin

if(!rst)

cout<=3’d0;

else if(load)

cout<=data;

else if(cout>=3’d6)

cout<=3’d0;

else

cout<=cout+3’d1;

end

endmodule

49:你所知道的可編程邏輯器件有哪些?

PAL,PLA,GAL,CPLD,FPGA

50:用Verilog或VHDL寫一段代碼,實現消除一個glitch(毛刺)?

將傳輸過來的信號經過兩級觸發器就可以消除毛刺。(這是我自己採用的方式:這種方式消除毛刺是需要滿足一定條件的,並不能保證一定可以消除)

module(clk,data,q_out)

input clk,data;

output reg q_out;

reg q1;

always@(posedge clk)

begin

q1<=data;

q_out<=q1;

end

endmodule

51:SRAM,FALSH MEMORY,DRAM,SSRAM及SDRAM的區別?

SRAM:靜態隨機存儲器,存取速度快,但容量小,掉電後數據會丟失,不像DRAM 需要不停的REFRESH,製造成本較高,通常用來作爲快取(CACHE) 記憶體使用。

FLASH:閃存,存取速度慢,容量大,掉電後數據不會丟失

DRAM:動態隨機存儲器,必須不斷的重新的加強(REFRESHED) 電位差量,否則電位差將降低至無法有足夠的能量表現每一個記憶單位處於何種狀態。價格比SRAM便宜,但訪問速度較慢,耗電量較大,常用作計算機的內存使用。

SSRAM:即同步靜態隨機存取存儲器。對於SSRAM的所有訪問都在時鐘的上升/下降沿啓動。地址、數據輸入和其它控制信號均於時鍾信號相關。

SDRAM:即同步動態隨機存取存儲器。

52:有四種複用方式,頻分多路複用,寫出另外三種?

四種複用方式:頻分多路複用(FDMA),時分多路複用(TDMA),碼分多路複用(CDMA),波分多路複用(WDMA)。

53:ASIC設計流程中什麼時候修正Setup time violation 和Hold time violation?如何修正?解釋setup和hold time violation,畫圖說明,並說明解決辦法。(威盛VIA2003.11.06 上海筆試試題)

見前面的建立時間和保持時間,violation違反,不滿足

54:給出一個組合邏輯電路,要求分析邏輯功能。

所謂組合邏輯電路的分析,就是找出給定邏輯電路輸出和輸入之間的關係,並指出電路的邏輯功能。

分析過程一般按下列步驟進行:

1:根據給定的邏輯電路,從輸入端開始,逐級推導出輸出端的邏輯函數表達式。

2:根據輸出函數表達式列出真值表;

3:用文字概括處電路的邏輯功能;

55:如何防止亞穩態?

亞穩態是指觸發器無法在某個規定時間段內達到一個可確認的狀態。當一個觸發器進入亞穩態時,既無法預測該單元的輸出電平,也無法預測何時輸出才能穩定在某個正確的電平上。在這個穩定期間,觸發器輸出一些中間級電平,或者可能處於振盪狀態,並且這種無用的輸出電平可以沿信號通道上的各個觸發器級聯式傳播下去。

解決方法:

1 降低系統時鐘頻率

2 用反應更快的FF

3 引入同步機制,防止亞穩態傳播(可以採用前面說的加兩級觸發器)。

4 改善時鐘質量,用邊沿變化快速的時鐘信號

56:基爾霍夫定理的內容

基爾霍夫定律包括電流定律和電壓定律:

電流定律:在集總電路中,在任一瞬時,流向某一結點的電流之和恆等於由該結點流出的電流之和。

電壓定律:在集總電路中,在任一瞬間,沿電路中的任一回路繞行一週,在該回路上電動勢之和恆等於各電阻上的電壓降之和。

57:描述反饋電路的概念,列舉他們的應用。

反饋,就是在電路系統中,把輸出迴路中的電量(電壓或電流)輸入到輸入迴路中去。

反饋的類型有:電壓串聯負反饋、電流串聯負反饋、電壓並聯負反饋、電流並聯負反饋。

負反饋的優點:降低放大器的增益靈敏度,改變輸入電阻和輸出電阻,改善放大器的線性和非線性失真,有效地擴展放大器的通頻帶,自動調節作用。

電壓負反饋的特點:電路的輸出電壓趨向於維持恆定。

電流負反饋的特點:電路的輸出電流趨向於維持恆定。

58:有源濾波器和無源濾波器的區別

無源濾波器:這種電路主要有無源元件R、L和C組成

有源濾波器:集成運放和R、C組成,具有不用電感、體積小、重量輕等優點。

集成運放的開環電壓增益和輸入阻抗均很高,輸出電阻小,構成有源濾波電路後還具有一定的電壓放大和緩衝作用。但集成運放帶寬有限,所以目前的有源濾波電路的工作頻率難以做得很高。

59:給了reg的setup,hold時間,求中間組合邏輯的delay範圍。
Tdelay < Tperiod - Tsetup – Thold

Tperiod > Tsetup + Thold +Tdelay (用來計算最高時鐘頻率)

Tco= Tsetup + Thold 即觸發器的傳輸延時

60、時鐘週期爲T,觸發器D1的寄存器到輸出時間(觸發器延時Tco)最大爲T1max,最小爲T1min。組合邏輯電路最大延遲爲T2max,最小爲T2min。問,觸發器D2的建立時間T3和保持時間應滿足什麼條件。
T3setup>T+T2max 時鐘沿到來之前數據穩定的時間(越大越好),一個時鐘週期T加上最大的邏輯延時。

T3hold>T1min+T2min 時鐘沿到來之後數據保持的最短時間,一定要大於最小的延時也就是T1min+T2min

61、給出某個一般時序電路的圖,有Tsetup,Tdelay,Tck->q(Tco),還有 clock的delay,寫出決定最大時鐘的因素,同時給出表達式。
T+Tclkdealy>Tsetup+Tco+Tdelay;
Thold>Tclkdelay+Tco+Tdelay; 保持時間與時鐘週期無關

62、實現三分頻電路,3/2分頻電路等(偶數倍分頻 奇數倍分頻)

圖2是3分頻電路,用JK-FF實現3分頻很方便,不需要附加任何邏輯電路就能實現同步計數分頻。但用D-FF實現3分頻時,必須附加譯碼反饋電路,如圖2所示的譯碼復位電路,強制計數狀態返回到初始全零狀態,就是用NOR門電路把Q2,Q1=“11B”的狀態譯碼產生“H”電平復位脈衝,強迫FF1和FF2同時瞬間(在下一時鐘輸入Fi的脈衝到來之前)復零,於是Q2,Q1=“11B”狀態僅瞬間作爲“毛刺”存在而不影響分頻的週期,這種“毛刺”僅在Q1中存在,實用中可能會造成錯誤,應當附加時鐘同步電路或阻容低通濾波電路來濾除,或者僅使用Q2作爲輸出。D-FF的3分頻,還可以用AND門對Q2,Q1譯碼來實現返回復零。

 

63、名詞解釋

CMOS(Complementary Metal Oxide Semiconductor),互補金屬氧化物半導體,電壓控制的一種放大器件。是組成CMOS數字集成電路的基本單元。

MCU(Micro Controller Unit)中文名稱爲微控制單元,又稱單片微型計算機(Single Chip Microcomputer)或者單片機,是指隨着大規模集成電路的出現及其發展,將計算機的CPU、RAM、ROM、定時數計器和多種I/O接口集成在一片芯片上,形成芯片級的計算機,爲不同的應用場合做不同組合控制。

RISC(reduced instruction set computer,精簡指令集計算機)是一種執行較少類型計算機指令的微處理器,起源於80年代的MIPS主機(即RISC機),RISC機中採用的微處理器統稱RISC處理器。這樣一來,它能夠以更快的速度執行操作(每秒執行更多百萬條指令,即MIPS)。因爲計算機執行每個指令類型都需要額外的晶體管和電路元件,計算機指令集越大就會使微處理器更復雜,執行操作也會更慢。

CISC是複雜指令系統計算機(Complex Instruction Set Computer)的簡稱,微處理器是臺式計算機系統的基本處理部件,每個微處理器的核心是運行指令的電路。指令由完成任務的多個步驟所組成,把數值傳送進寄存器或進行相加運算。

DSP(digital signal processor)是一種獨特的微處理器,是以數字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉換爲0或1的數字信號。再對數字信號進行修改、刪除、強化,並在其他系統芯片中把數字數據解譯回模擬數據或實際環境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數以千萬條複雜指令程序,遠遠超過通用微處理器,是數字化電子世界中日益重要的電腦芯片。它的強大數據處理能力和高運行速度,是最值得稱道的兩大特色。

FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作爲專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。

ASIC:專用集成電路,它是面向專門用途的電路,專門爲一個用戶設計和製造的。根據一個用戶的特定要求,能以低研製成本,短、交貨週期供貨的全定製,半定製集成電路。與門陣列等其它ASIC(Application Specific IC)相比,它們又具有設計開發週期短、設計製造成本低、開發工具先進、標準產品無需測試、質量穩定以及可實時在線檢驗等優點

PCI(Peripheral Component Interconnect) 外圍組件互連,一種由英特爾Intel)公司1991年推出的用於定義局部總線的標準。

ECC是“Error Correcting Code”的簡寫,中文名稱是“錯誤檢查和糾正”。ECC是一種能夠實現“錯誤檢查和糾正”的技術,ECC內存就是應用了這種技術的內存,一般多應用在服務器及圖形工作站上,這將使整個電腦系統在工作時更趨於安全穩定。

DDR=Double Data Rate雙倍速率同步動態隨機存儲器。嚴格的說DDR應該叫DDR SDRAM,人們習慣稱爲DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的縮寫,即同步動態隨機存取存儲器

IRQ全稱爲Interrupt Request,即是中斷請求的意思(以下使用IRQ稱呼)。IRQ的作用就是在我們所用的電腦中,執行硬件中斷請求的動作,用來停止其相關硬件的工作狀態

USB ,是英文Universal Serial BUS(通用串行總線)的縮寫,而其中文簡稱爲“通串線,是一個外部總線標準,用於規範電腦與外部設備的連接和通訊。

BIOS是英文"Basic Input Output System"的縮略語,直譯過來後中文名稱就是"基本輸入輸出系統"。其實,它是一組固化到計算機內主板上一個ROM芯片上的程序,它保存着計算機最重要的基本輸入輸出的程序、系統設置信息、開機後自檢程序和系統自啓動程序。 其主要功能是爲計算機提供最底層的、最直接的硬件設置和控制。

64、三極管特性曲線

 

65、Please show the CMOS inverter schematic, layout and its cross section with P-well process. Plot its transfer curve (Vout-Vin) and also explain the operation region of PMOS and NMOS for each segment of the transfer curve? (威盛筆試題circuit design-beijing-03.11.09)

66、To design a CMOS inverter with balance rise and fall time, please define the ration of channel width of PMOS and NMOS and explain? P管要比N管寬

67、Please draw the transistor level schematic of a CMOS 2 input AND gate and explain which input has faster response for output rising edge.(less delay time)。(威盛筆試題circuit design-beijing-03.11.09)

68、爲了實現邏輯Y=A’B+AB’+CD,請選用以下邏輯中的一種,並說明爲什麼?

1)INV 2)AND 3)OR 4)NAND 5)NOR 6)XOR 答案:NAND(未知)

69、用波形表示D觸發器的功能。(揚智電子筆試)

 

70、用傳輸門和倒向器搭一個邊沿觸發器(DFF)。(揚智電子筆試)

 

通過級聯兩個D鎖存器組成

71、用邏輯門畫出D觸發器。(威盛VIA 2003.11.06 上海筆試試題)

 

電平觸發的D觸發器(D鎖存器)牢記!

 

邊沿觸發的D觸發器,有兩個D鎖存器構成

72、畫出DFF的結構圖,用verilog實現之。(威盛)

module dff(clk,d,qout);

input clk,d;

output qout;

reg qout;

always@(posedge clk)

begin

if(!reset)

qout<=0;

else

qout<=d;

end

endmodule

73、畫出一種CMOS的D鎖存器的電路圖和版圖。(未知)

 

或者是利用前面與非門搭的D鎖存器實現

74、用filp-flop和logic-gate設計一個1位加法器,輸入carryin和current-stage,輸出carryout和next-stage. (未知)

75、用D觸發器做個4進制的計數。(華爲)

按照時序邏輯電路的設計步驟來:

1、 寫出狀態轉換表

2、 寄存器的個數確定

3、 狀態編碼

4、 卡諾圖化簡

5、 狀態方程,驅動方程等

閻石數字電路 P314

76、實現N位Johnson Counter, N=5。(南山之橋)

78、數字電路設計當然必問Verilog/VHDL,如設計計數器。(未知)

79、請用HDL描述四位的全加法器、5分頻電路。(仕蘭微電子)

module adder4(a,b,ci,s,co);

input ci;

input [3:0] a,b;

output co;

output [3:0] s;

assign {co,s}=a+b+ci;

endmodule

module div5(clk,rst,clk_out);

input clk,rst;

output clk_out;

reg [3:0] count;

always@(posedge clk)

begin

if(!rst)

begin

count<=0;

clk_out=0;

end

else if(count==3’d5)

begin

count<=0;

clk_out=~clk_out;

end

else

count<=count+1;

end

endmodule

實現奇數倍分頻且佔空比爲50%的情況:

module div7 ( clk, reset_n, clkout );

input clk,reset_n;

output clkout;

reg [3:0] count;

reg div1;

reg div2;

always @( posedge clk )

begin

if ( ! reset_n )

count <= 3'b000;

else

case ( count )

3'b000 : count <= 3'b001;

3'b001 : count <= 3'b010;

3'b010 : count <= 3'b011;

3'b011 : count <= 3'b100;

3'b100 : count <= 3'b101;

3'b101 : count <= 3'b110;

3'b110 : count <= 3'b000;

default :

count <= 3'b000;

endcase

end

always @( posedge clk )

begin

if ( ! reset_n )

div1 <= 1'b0;

else if ( count == 3'b000 )

div1 <= ~ div1;

end

always @( negedge clk )

begin

if ( ! reset_n )

div2 <= 1'b0;

else if ( count == 3'b100 )

div2 <= ~ div2;

end

assign clkout = div1 ^ div2;

endmodule

80、用VERILOG或VHDL寫一段代碼,實現10進制計數器。(未知)

module counter10(clk,rst,count);

input clk,rst;

output [3:0] count;

reg [3:0] count;

always@(posedge clk)

begin

if(!rst)

count<=0;

else if(count>=4’d9)

count<=0;

else

count<=count+1;

end

endmodule

81、描述一個交通信號燈的設計。(仕蘭微電子)

按照時序邏輯電路的設計方法:

82、畫狀態機,接受1,2,5分錢的賣報機,每份報紙5分錢。(揚智電子筆試)

1、確定輸入輸出,投1分錢A=1,投2分錢B=1,投5分錢C=1,給出報紙Y=1

2、確定狀態數畫出狀態轉移圖,沒有投幣之前的初始狀態S0,投入了1分硬幣S1,投入了2分硬幣S2,投入了3分硬幣S3,投入了4分硬幣S4。

3、畫卡諾圖或者是利用verilog編碼

83、設計一個自動售貨機系統,賣soda水的,只能投進三種硬幣,要正確的找回錢

數。 (1)畫出fsm(有限狀態機);(2)用verilog編程,語法要符合fpga設計的要求。(未知)

84、設計一個自動飲料售賣機,飲料10分錢,硬幣有5分和10分兩種,並考慮找零:(1)畫出fsm(有限狀態機);(2)用verilog編程,語法要符合fpga設計的要求;(3)設計工程中可使用的工具及設計大致過程。(未知)

1、輸入A=1表示投5分錢,B=1表示投10分錢,輸出Y=1表示給飲料,Z=1表示找零

2、確定狀態數,沒投幣之前S0,投入了5分S1

85、畫出可以檢測10010串的狀態圖,並verilog實現之。(威盛)

1、輸入data,1和0兩種情況,輸出Y=1表示連續輸入了10010

2、確定狀態數沒輸入之前S0,輸入一個0到了S1,10爲S2,010爲S3,0010爲S4

86、用FSM實現101101的序列檢測模塊。(南山之橋)

a爲輸入端,b爲輸出端,如果a連續輸入爲101101則b輸出爲1,否則爲0。
例如 a: 0001100110110110100110
b: 0000000000100100000000
請畫出state machine;請用RTL描述其state machine。(未知)

確定狀態數,沒有輸入或輸入0爲S0,1爲S1,01爲S2,101爲S3,1101爲S4,01101爲S5。知道了輸入輸出和狀態轉移的關係很容易寫出狀態機的verilog代碼,一般採用兩段式狀態機

87、給出單管DRAM的原理圖

發佈了95 篇原創文章 · 獲贊 42 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章