Q16:FPGA設(shè)計(jì)中對(duì)時(shí)鐘的使用?(例如分頻等)
FPGA芯片有固定的時(shí)鐘路由,這些路由能有減少時(shí)鐘抖動(dòng)和偏差。需要對(duì)時(shí)鐘進(jìn)行相位移動(dòng)或變頻的時(shí)候,一般不允許對(duì)時(shí)鐘進(jìn)行邏輯操作,這樣不僅會(huì)增加時(shí)鐘的偏差和抖動(dòng),還會(huì)使時(shí)鐘帶上毛刺。一般的處理方法是采用FPGA芯片自帶的時(shí)鐘管理器如PLL,DLL或DCM,或者把邏輯轉(zhuǎn)換到觸發(fā)器的D輸入(這些也是對(duì)時(shí)鐘邏輯操作的替代方案)。
Q17:FPGA設(shè)計(jì)中如何實(shí)現(xiàn)同步時(shí)序電路的延時(shí)?
首先說(shuō)說(shuō)異步電路的延時(shí)實(shí)現(xiàn):異步電路一半是通過(guò)加buffer、兩級(jí)與非門等(我還沒(méi)用過(guò)所以也不是很清楚),但這是不適合同步電路實(shí)現(xiàn)延時(shí)的。在同步電路中,對(duì)于比較大的和特殊要求的延時(shí),一半通過(guò)高速時(shí)鐘產(chǎn)生計(jì)數(shù)器,通過(guò)計(jì)數(shù)器來(lái)控制延時(shí);對(duì)于比較小的延時(shí),可以通過(guò)觸發(fā)器打一拍,不過(guò)這樣只能延遲一個(gè)時(shí)鐘周期。
Q18:FPGA中可以綜合實(shí)現(xiàn)為RAM/ROM/CAM的三種資源及其注意事項(xiàng)?
三種資源:block ram;觸發(fā)器(FF),查找表(LUT);
注意事項(xiàng):1:在生成RAM等存儲(chǔ)單元時(shí),應(yīng)該首選block ram 資源;其原因有二:第一:使用block ram等資源,可以節(jié)約更多的FF和4-LUT等底層可編程單元。使用block ram可以說(shuō)是“不用白不用”,是最大程度發(fā)揮器件效能,節(jié)約成本的一種體現(xiàn);第二:block ram是一種可以配置的硬件結(jié)構(gòu),其可靠性和速度與用LUT和register構(gòu)建的存儲(chǔ)器更有優(yōu)勢(shì)。2:弄清FPGA的硬件結(jié)構(gòu),合理使用block ram資源;3:分析block ram容量,高效使用block ram資源;4:分布式ram資源(distribute ram)
Q19:Xilinx中與全局時(shí)鐘資源和DLL相關(guān)的硬件原語(yǔ):
常用的與全局時(shí)鐘資源相關(guān)的Xilinx器件原語(yǔ)包括:IBUFG,IBUFGDS,BUFG,BUFGP,BUFGCE,BUFGMUX,BUFGDLL,DCM等。關(guān)于各個(gè)器件原語(yǔ)的解釋可以參考《FPGA設(shè)計(jì)指導(dǎo)準(zhǔn)則》p50部分。
Q20:HDL語(yǔ)言的層次概念?
HDL語(yǔ)言是分層次的、類型的,最常用的層次概念有系統(tǒng)與標(biāo)準(zhǔn)級(jí)、功能模塊級(jí),行為級(jí),寄存器傳輸級(jí)和門級(jí)。
Q21:查找表的原理與結(jié)構(gòu)?
查找表(look-up-table)簡(jiǎn)稱為L(zhǎng)UT,LUT本質(zhì)上就是一個(gè)RAM。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線的16x1的RAM。 當(dāng)用戶通過(guò)原理圖或HDL語(yǔ)言描述了一個(gè)邏輯電路以后,PLD/FPGA開(kāi)發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫入RAM,這樣,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容,然后輸出即可
Q22:ic設(shè)計(jì)前端到后端的流程和eda工具?
設(shè)計(jì)前端也稱邏輯設(shè)計(jì),后端設(shè)計(jì)也稱物理設(shè)計(jì),兩者并沒(méi)有嚴(yán)格的界限,一般涉及到與工藝有關(guān)的設(shè)計(jì)就是后端設(shè)計(jì)。
1:規(guī)格制定:客戶向芯片設(shè)計(jì)公司提出設(shè)計(jì)要求。
2:詳細(xì)設(shè)計(jì):芯片設(shè)計(jì)公司(Fabless)根據(jù)客戶提出的規(guī)格要求,拿出設(shè)計(jì)解決方案和具體實(shí)現(xiàn)架構(gòu),劃分模塊功能。目前架構(gòu)的驗(yàn)證一般基于systemC語(yǔ)言,對(duì)價(jià)后模型的仿真可以使用systemC的仿真工具。例如:CoCentric和Visual Elite等。
3:HDL編碼:設(shè)計(jì)輸入工具:ultra ,visual VHDL等
4:仿真驗(yàn)證:modelsim
5:邏輯綜合:synplify
6:靜態(tài)時(shí)序分析:synopsys的Prime Time
7:形式驗(yàn)證:Synopsys的Formality.
Q23:寄生效應(yīng)在ic設(shè)計(jì)中怎樣加以克服和利用(這是我的理解,ic設(shè)計(jì)過(guò)程中將寄生效應(yīng)的怎樣反饋影響設(shè)計(jì)師的設(shè)計(jì)方案)?
IC中各元件均制作于同一襯底,注定了元件與元件之間,元件與襯底之間存在寄生效應(yīng)。某些寄生效應(yīng)是分立電路所沒(méi)有的,因此研究IC就必須了解這些寄生效應(yīng),產(chǎn)生寄生效應(yīng)的原因減弱或消除寄生效應(yīng)的方法,避免影響電路的性能,在可能的情況下,可以利用某些寄生效應(yīng)構(gòu)成電路所需的元件,簡(jiǎn)化設(shè)計(jì)線路。
比如采用的措施有:
增加n+埋層
①加大了寄生PNP晶體管的基區(qū)寬度
②形成了寄生PNP晶體管基區(qū)減速場(chǎng)
Q24:用filp-flop和logic-gate設(shè)計(jì)一個(gè)1位加法器,輸入carryin和current-stage,輸出
carryout和next-stage?
process(sig_intel)
begin
case sig_intel is
when "000" => carryout <= '0';
next_state <= '0';
when "001" => carryout <= '1';
next_state <= '0';
when "010" => carryout <= '1';
next_state <= '0';
when "011" => carryout <= '0';
next_state <= '1';
when "100" => carryout <= '1';
next_state <= '0';
when "101" => carryout <= '0';
next_state <= '1';
when "110" => carryout <= '0';
next_state <= '1';
when "111" => carryout <= '1';
next_state <= '1';
when others => carryout <= 'X';
next_state <= 'X';
end case;
end process;
25:設(shè)計(jì)一個(gè)自動(dòng)飲料售賣機(jī),飲料10分錢,硬幣有5分和10分兩種,并考慮找零,
1.畫(huà)出fsm(有限狀態(tài)機(jī))
2.用verilog編程,語(yǔ)法要符合fpga設(shè)計(jì)的要求
3.設(shè)計(jì)工程中可使用的工具及設(shè)計(jì)大致過(guò)程?
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity drink_auto_sale is
port(clk: in std_logic;
reset:in std_logic;
sw101:in std_logic;
sw102:in std_logic;
buy : out std_logic;
back: out std_logic);
end drink_auto_sale;
architecture Behavioral of drink_auto_sale is
type state_type is(st0,st1);
signal cs ,ns : state_type;
begin
process(clk,reset)
begin
if(reset = '1') then
cs <= st0;
elsif(clk'event and clk = '1') then
cs <= ns;
end if;
end process;
process(reset ,cs)
begin
case cs is
when st0 => if( sw101 = '1') then
ns <= st1;
buy<= '0';
back<= '0';
elsif(sw102 = '1') then
ns <= st0;
buy<= '1';
back <= '0';
else
ns <= st0 ;
buy <= '0';
back <= '0';
end if;
when st1 => if(sw101 = '1') then
ns <= st0;
buy <= '1';
back <= '0';
elsif(sw102 = '1') then
ns <= st0;
buy <= '1';
back <= '1';
end if;
when others => ns <= st0;
buy<= '0';
back <= '0';
end case;
end process;
end Behavioral;
設(shè)計(jì)過(guò)程:設(shè)定三個(gè)狀態(tài):0分,5分;當(dāng)狀態(tài)為0分時(shí),接收到5分信號(hào)脈沖后轉(zhuǎn)為5分;接收到10分信號(hào)脈沖時(shí),轉(zhuǎn)到0分狀態(tài),同時(shí)彈出飲料,不找零;狀態(tài)為5分時(shí),接受到5分信號(hào),彈出飲料,不找零,返回0分狀態(tài);當(dāng)接受到10分狀態(tài)時(shí),彈出飲料,找零,并返回零分狀態(tài)。
所用設(shè)計(jì)工具:ISE7.1,modelsim,synplify
(不知道為什么上面的狀態(tài)機(jī)設(shè)計(jì)在synplify的RTL view中沒(méi)能看到狀態(tài)機(jī)流程圖,所以狀態(tài)轉(zhuǎn)移圖就沒(méi)畫(huà))。
Q26:什么是"線與"邏輯,要實(shí)現(xiàn)它,在硬件特性上有什么具體要求?
線與邏輯是兩個(gè)輸出信號(hào)相連可以實(shí)現(xiàn)與的功能。在硬件上,要用oc門來(lái)實(shí)現(xiàn),由于不用 oc門可能使灌電流過(guò)大,而燒壞邏輯門. 同時(shí)在輸出端口應(yīng)加一個(gè)上拉電阻。Oc門就是集電極開(kāi)路門。
Q27:什么是競(jìng)爭(zhēng)與冒險(xiǎn)現(xiàn)象?怎樣判斷?如何消除?
在組合電路中,某一輸入變量經(jīng)過(guò)不同途徑傳輸后,到達(dá)電路中某一匯合點(diǎn)的時(shí)間有先有后,這種現(xiàn)象稱競(jìng)爭(zhēng);由于競(jìng)爭(zhēng)而使電路輸出發(fā)生瞬時(shí)錯(cuò)誤的現(xiàn)象叫做冒險(xiǎn)。(也就是由于競(jìng)爭(zhēng)產(chǎn)生的毛刺叫做冒險(xiǎn))。判斷方法:代數(shù)法(如果布爾式中有相反的信號(hào)則可能產(chǎn)生競(jìng)爭(zhēng)和冒險(xiǎn)現(xiàn)象);卡諾圖:有兩個(gè)相切的卡諾圈并且相切處沒(méi)有被其他卡諾圈包圍,就有可能出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn);實(shí)驗(yàn)法:示波器觀測(cè);
解決方法:1:加濾波電路,消除毛刺的影響;2:加選通信號(hào),避開(kāi)毛刺;3:增加冗余項(xiàng)消除邏輯冒險(xiǎn)。
評(píng)論
查看更多