每個人都曾試圖在平淡的學(xué)習(xí)、工作和生活中寫一篇文章。寫作是培養(yǎng)人的觀察、聯(lián)想、想象、思維和記憶的重要手段。那么我們該如何寫一篇較為完美的范文呢?下面我給大家整理了一些優(yōu)秀范文,希望能夠幫助到大家,我們一起來看一看吧。
EDA基礎(chǔ)知識篇一
全稱:專用集成電路; :現(xiàn)場可編程門陣列 :復(fù)雜可編程邏輯器件; 全稱:硬件描述語言; 5.全定制; 6.半定制;
核;ip就是知識產(chǎn)權(quán)核或知識產(chǎn)權(quán)模塊的意思
8.綜合(器);綜合就是將電路的高級語言(如行為描述)轉(zhuǎn)換為低級的,可與fpga/cpld的基本結(jié)構(gòu)相映射的網(wǎng)表文件或程序。
9.適配(器);適配器也稱結(jié)構(gòu)綜合器,它的功能是將綜合器產(chǎn)生的網(wǎng)表文件配置于指定的目標(biāo)器件中,使之產(chǎn)生最終的下載文件。
10.功能仿真;是直接對vhdl、原理圖描述或其他描述形式的邏輯功能進(jìn)行測試模擬,以了解其實現(xiàn)的功能是否滿足原設(shè)計的要求
11.時序仿真;就是接近真實器件運(yùn)行特性的仿真,仿真文件中已包含了器件硬件特性參數(shù),因而,仿真精度高。
12.編程下載;把適配后生成的下載或配置文件,通過編程器或編程電纜向fpga或cpld下載,以便進(jìn)行硬件測試和驗證 ;可編程只讀存儲器 ;可編程邏輯陣列 ;可編程陣列邏輯 16.查找表; 17.乘積項;
18.實體;vhdl實體作為一個設(shè)計實體(獨(dú)立的電路功能結(jié)構(gòu))的組成部分,其功能是對這個設(shè)計實體與外部電路進(jìn)行接口描述。
19.結(jié)構(gòu)體;結(jié)構(gòu)體是實體所定義實體中的一個組成部分。結(jié)構(gòu)體描述設(shè)計實體的內(nèi)部結(jié)構(gòu)和外部設(shè)計實體端口間的邏輯關(guān)系。
20.元件例化;元件例化意味著在當(dāng)前結(jié)構(gòu)體內(nèi)定義了一個新的設(shè)計層次,這個設(shè)計層次的總稱叫元件,但它可以以不同的形式出現(xiàn)。?? 21.時鐘進(jìn)程; 22.三態(tài); 23.線與; 24.數(shù)據(jù)對象;
25.變量;變量是一個局部量,只能在進(jìn)程和子程序中使用,變量的賦值是立即發(fā)生的,不存在任何延時行為。
26.信號;信號是硬件系統(tǒng)的基本數(shù)據(jù)對象,它的性質(zhì)類似于連接線。信號可以作為設(shè)計實體中并行語句模塊間的信息交流通道
型狀態(tài)機(jī);異步輸出狀態(tài)機(jī),輸出僅為當(dāng)前狀態(tài)的函數(shù),在輸入發(fā)生變化時還必須等待時鐘的到來。
型狀態(tài)機(jī);同步輸出狀態(tài)機(jī),輸出是當(dāng)前狀態(tài)和所有輸入信號的函數(shù),它的輸出是在輸入變化后立即發(fā)生的。不依賴于時鐘的同步。
注意:
1.<= 對信號signal的賦值 := 是對變量variable的賦值
2.程序的實體名必須和文件名一致,例1中二輸入與門的文件名必須為yumen
asic全稱;fpga和cpld全稱;vhdl全稱;全定制;半定制; ip核;綜合(器);適配(器);功能仿真;時序仿真;編程下載;prom;pla;pal;查找表;乘積項;實體;結(jié)構(gòu)體;元件例化;時鐘進(jìn)程;三態(tài);線與; 數(shù)據(jù)對象;變量;信號; moore型狀態(tài)機(jī);mealy型狀態(tài)機(jī)。
二、程序分析及設(shè)計
1、二輸入與門的vhdl語言設(shè)計。library ieee;use ;entity yumen is
port(a, b : in bit;
y : out bit);end entity yumen;architecture one of yumen is begin y <= a and b;end architecture one;
2、帶有異步復(fù)位和同步時鐘使能的6進(jìn)制計數(shù)器vhdl語言設(shè)計。
library ieee;use ;use ;entity jinzhi is port(clk,rst,en : in std_logic;cq : out std_logic_vector(2 downto 0);cout : out std_logic);end jinzhi;architecture behav of jinzhi is begin process(clk, rst, en)variable cqi : std_logic_vector(2 downto 0);begin if rst = '1' then cqi :=(others =>'0');--計數(shù)器復(fù)位 elsif clk'event and clk='1' then--檢測時鐘上升沿 if en = '1' then--檢測是否允許計數(shù) if cqi < 5 then cqi := cqi + 1;--允許計數(shù)
else cqi :=(others =>'0');--大于5,計數(shù)值清零 end if;end if;end if;if cqi = 5 then cout <= '1';--計數(shù)大于5,輸出進(jìn)位信號 else cout <= '0';end if;cq <= cqi;--將計數(shù)值向端口輸出 end process;end behav;
3、用vhdl語言設(shè)計2選1數(shù)據(jù)選擇器。
library ieee;use ;entity erxuanyi is port(a, b, s: in bit;y : out bit);end erxuanyi;architecture one of erxuanyi is begin process(a,b,s)begin if s = '0' then y <= a;else y <= b;end if;end process;end;
4、邊沿型t、d觸發(fā)器vhdl語言設(shè)計。--d觸發(fā)器
library ieee;use ;entity dff is port(clk : in std_logic;d : in std_logic;q : out std_logic);end;architecture bhv of dff is signal q1 : std_logic;begin process(clk)begin if clk'event and clk = '1' then q1 <= d;end if;end process;q <= q1;end bhv;
--t觸發(fā)器
有clk且為1的時候,t與當(dāng)前狀態(tài)異或
library ieee;use ;entity tff is port(clk : in std_logic;t : in std_logic;q : out std_logic);end;architecture bhv of tff is signal q1 : std_logic;begin process(clk)begin if clk'event and clk = '1' then q1 <= q1 xor t;end if;end process;q <= q1;end bhv;
5、帶并行置數(shù)的8位右移移位寄存器vhdl語言設(shè)計。
library ieee;use ;entity shfrt is port(clk,load: in std_logic;
din: in std_logic_vector(7 downto 0);
qb:out std_logic);end shfrt;
architecture behav of shfrt is begin process(clk,load)
variable reg8: std_logic_vector(7 to 0);begin
if clk'event and clk='1' then
if load='1' then reg8:=din;
else reg8(6 downto 0):=reg8(7 downto 1);
end if;
end if;
qb<=reg8(0);end process;end behav;--說明:當(dāng)clk有上升沿,而且load為1的時候把din的值賦給reg8,如果clk有上升沿,而且load為0的時候把reg8的高7為賦給低7位(注意此時最高位不變)6、1位半加器vhdl語言設(shè)計。(布爾邏輯描述)library ieee;use ;entity banjia is port(a,b : in std_logic;co,so : out std_logic);end entity banjia;architecture fh1 of banjia is begin so <= not(a xor(not b));co <= a and b;end architecture fh1;
7、用vhdl語言設(shè)計實現(xiàn)四選一數(shù)據(jù)選擇器。
library ieee;use ;entity sixuan is port(a, b, c , d: in bit;
s: in std_logic_vector(1 downto 0);y : out bit);end sixuan;architecture one of sixuan is begin process(a,b,c,d,s)begin case s(1 downto 0)is when “00” => y <= a;when “01” => y <= b;when “10” => y <= c;when “11” => y <= d;when others => null;end case;end process;end;
8、用vhdl語言實現(xiàn)三態(tài)門設(shè)計。
library ieee;use ;entity santai is port(enable : in std_logic;datain : in std_logic_vector(7 downto 0);dataout : out std_logic_vector(7 downto 0));end santai;architecture bhv of santai is begin process(enable,datain)begin if enable = '1' then dataout <= datain;else dataout <=“zzzzzzzz”;end if;end process;end bhv;
9、設(shè)有vhdl描述的半加器h_adder和或門or2,試通過層次化設(shè)計思想設(shè)計由半加器和或門構(gòu)成的一位二進(jìn)制全加器的vhdl程序。全加器f_adder電路結(jié)構(gòu)組成圖如下所示。
半加器h_adder library ieee;use ;entity h_adder is port(a,b : in std_logic;co,so : out std_logic);end entity h_adder;architecture fh1 of h_adder is begin so <=(a or b)and(a nand b);co <= not(a nand b);end architecture fh1;
或門 or2a library ieee;use ;entity or2a is port(a, b :in std_logic;c : out std_logic);end entity or2a;architecture one of or2a is begin c <= a or b;end architecture one;
元件例化adder library ieee;use ;entity adder is port(ain,bin,cin:in std_logic;
cout,sum :out std_logic);end entity adder;architecture fd1 of adder is component h_adder
port(a,b:in std_logic;
co,so:out std_logic);end component;component or2a
port(a,b:in std_logic;
c:out std_logic);end component;signal d,e,f:std_logic;begin u1 : h_adder port map(a=>ain,b=>bin,co=>d,so=>e);u2 : h_adder port map(a=>e,b=>cin,co=>f,so=>sum);u3 : or2a port map(a=>d,b=>f,c=>cout);end architecture fd1;
EDA基礎(chǔ)知識篇二
名詞解釋:
eda:electronic design auto mation 電子設(shè)計自動化 pld:programmable logic device 可編程邏輯器件 ldpld:低密度可編程邏輯器件 hdpld:高密度可編程邏輯器件
prom:programmable read only memory 可編程只讀存儲器 pla:programmable logic array 可編程邏輯陣列 pal:programmable array logic 可編程陣列邏輯 gal:generic attay logic 通用陣列邏輯
epld:erasable programmable logic device 可擦除可編程邏輯器件 cpld:complex programmable logic device 復(fù)雜可編程邏輯器件 fpga:現(xiàn)場可編程門陣列
otp:one time programmable 一次性編程器件 mtp:many time programmable 多次編程器件 isp:在系統(tǒng)可編程 簡答:
1、eda設(shè)計流程:設(shè)計準(zhǔn)備;設(shè)計輸入←→功能仿真(圖形輸入方式,文本輸入方式,波形輸入方式);設(shè)計處理←→時序仿真(設(shè)計編譯和檢查,設(shè)計優(yōu)化和綜合,適配和分割,布局和布線,生成編程數(shù)據(jù)文件);設(shè)計效驗;器件編程;器件測試和設(shè)計驗證;設(shè)計完成。
2、硬件描述語言:vhdl:
1、具有強(qiáng)大的功能,覆蓋面廣,描述功能強(qiáng)
2、有良好的可讀性
3、有良好的可移植性
4、可以延長設(shè)計的生命周期
5、支持對大規(guī)模設(shè)計的分解和已有設(shè)計的再利用
6、有利于保護(hù)知識產(chǎn)權(quán)
verivog hdl:適合算法級,寄存器傳輸級,邏輯級,門級和版圖級等各個層次和電路設(shè)計和描述。最大的優(yōu)點(diǎn)是設(shè)計與工藝無關(guān)性。
vhdl設(shè)計實體的基本機(jī)構(gòu)圖。
1、庫,程序包:libtaty ieee;
use ;
2、實體entity 實名體
is
generic(類屬表);--類屬參數(shù)聲明。
port(端口表);--端口聲明
end實名體
端口方向:in-輸入
out-輸出
inout-雙向
buffer-具有讀功能的輸出
3、結(jié)構(gòu)體:architecture結(jié)構(gòu)體名of實體名is [信號聲明語句]:--為內(nèi)部信號名稱及類型聲明 begin [功能描述語句] end architectvre 結(jié)構(gòu)實體名;
4、vhdl文字規(guī)則:
1、數(shù)制#數(shù)值#
例:10#170#--十進(jìn)制數(shù)值文字
2、數(shù)制基數(shù)符號“數(shù)值字符串” 例:b“111011110”;--二進(jìn)制數(shù)數(shù)組
3、標(biāo)識符:以字母開頭,后面跟若干字母,數(shù)字或單個下劃線,但最后不能為下劃線。
5、vhdl對據(jù)對象:
1、變量:是一個局部量,只能在進(jìn)程函數(shù)和進(jìn)程中聲明和使用。
variable變量名:數(shù)據(jù)類型【:=初始值】; 2.信號描述硬件系統(tǒng)的基本數(shù)據(jù)對象。
signal信號名:數(shù)據(jù)類型【:=初值】
標(biāo)準(zhǔn)邏輯位:
1、未初始化的u;
2、強(qiáng)未知的x;
3、強(qiáng)0的0;
4、強(qiáng)1的1;
5、高阻態(tài)z
6、弱未知的w;
7、弱0的l;
8、弱1的h;
9、忽略-verilog hdl具有行為描述和結(jié)構(gòu)描述功能。
行為描述包括:系統(tǒng)級、算法級、寄存器傳輸級。jk觸發(fā)器
library ieee;use ;entity myjkff is port(j,k,clr:in std_logic;clk:in std_logic;q,qn:buffer std_logic);end myjkff;architecture one of myjkff is begin process(j,k,clr,clk)variable jk:std_logic_vector(1 dowmto 0)begin jk:=(j & k);if clr=’0’then q<=’0’;qn<=’1’;
elseif clk’event and clk=’0’then case jk is when “00”=>q<=q;qn<=qn;when “01”=>q<=’0’;qn<=’1’;when “10”=>q<=’1’;qn<=’0’;when “11”=>q<=not q;qn<=not qn;when others=>null;end case;end if;end process;end one;
8選一數(shù)據(jù)選擇器
library ieee;use ;entity vhdl1 is port(s1,s2,s3: in std_logic;a,b,c,d,e,f,j,h: in std_logic;z: out std_logic);end vhdl1;architecture example7 of vhdl1 is signal s: std_logic_vector(2 downto 0);begin s<=s1&s2&s3process(s1,s2,s3,a,b,c,d,e,f,j,h)begin case s is when “000”=>z<=a;when “001”=>z<=b;when “010”=>z<=c;when “011”=>z<=d;when “100”=>z<=e;when “101”=>z<=f;when “110”=>z<=j;when “111”=>z<=h;when others=>z<='x';end case;end process;end example7;
十五進(jìn)止加法計數(shù)器
library ieee;use ;
use ;
entity vhdl1 is port(clk,rst,ena:in std_logic;
q:buffer std_logic_vector(3 downto 0);
cout:out std_logic);end vhdl1;
architecture one of vhdl1 is begin process(clk,rst,ena)begin if rst='1' then q<=“0000”;elsif clk'event and clk='1' then if ena='1' then q<=q+1;if q=“1110” then q<=“0000”;end if;end if;cout<=q(0)and q(1)and q(2)and q(3);end if;end process;end one;
EDA基礎(chǔ)知識篇三
vhdl有如下特點(diǎn):①支持從系統(tǒng)級到邏輯門級電路的描述;②具有很強(qiáng)的硬件描述能力;③設(shè)計技術(shù)齊全、方法靈活、支持廣泛;④對設(shè)計描述具有相對的獨(dú)立性;⑤具有很強(qiáng)的移植能力;⑥易于共享和復(fù)用;⑦具有豐富的仿真語句和庫函數(shù);⑧設(shè)計結(jié)構(gòu)清晰、易讀易懂;⑨易實現(xiàn)系統(tǒng)的更新和升級;⑩數(shù)據(jù)類型豐富、安全性好。
vhdl語言中常用的五種庫:1)ieee庫:vhdl語言設(shè)計中最常見的庫。2)std庫:vhdl語言的標(biāo)準(zhǔn)庫3)work庫:用戶的vhdl語言工作庫。4)vital庫: vhdl語言的時序仿真庫5)用戶自定義的庫:用戶自定義的資源庫
變量的使用規(guī)則:① 變量不能用于硬件連線和存儲元件;② 變量賦值和初始化賦值都用“:=”表示;③ 變量的初值不是預(yù)設(shè)的,某一時刻只能有一個值;④ 變量不能用于在進(jìn)程間傳遞數(shù)據(jù);⑤ 仿真時,變量用于建模;⑥ 綜合時,變量充當(dāng)數(shù)據(jù)的暫存。
信號與變量的區(qū)別:①使用場合不同:變量在進(jìn)程、函數(shù)和過程中說明;信號在結(jié)構(gòu)體中說明。②賦值符號不同:變量用“:=”號賦值, 其值被立即使用(無時間延時);信號用“<=”賦值,其值可以附加延時。
vhdl語言預(yù)定義了五種運(yùn)算符:邏輯運(yùn)算符、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、符號運(yùn)算符、移位運(yùn)算符
主要的三家公司:xilinx、altera、lattice eda軟件系統(tǒng)包括子模塊:設(shè)計輸入子模塊、設(shè)計數(shù)據(jù)庫子模塊、分析驗證子模塊、綜合仿真子模塊、布局布線子模塊。
電子系統(tǒng)設(shè)計的仿真過程分為兩個階段:設(shè)計前期的系統(tǒng)級仿真和設(shè)計過程的電路級仿真。(系統(tǒng)仿真主要驗證系統(tǒng)的功能;電路級仿真主要驗證系統(tǒng)的性能,決定怎樣實現(xiàn)設(shè)計所需的精度。)
設(shè)計過程中的仿真有三種:行為仿真、功能仿真、時序仿真 數(shù)字系統(tǒng)的兩個模塊(子系統(tǒng)):數(shù)據(jù)處理子系統(tǒng)、控制子系統(tǒng)
數(shù)據(jù)處理子系統(tǒng)主要完成數(shù)據(jù)的采集、存儲、運(yùn)算、傳輸,主要由存儲器、運(yùn)算器、數(shù)據(jù)選擇器等功能電路組成。數(shù)字系統(tǒng)設(shè)計方法:模塊設(shè)計方法、自頂向下設(shè)計法、自底向上設(shè)計法。一般采用自頂向下、由粗到細(xì)、逐步求精的方法。
數(shù)字系統(tǒng)的設(shè)計準(zhǔn)則:1)分割準(zhǔn)則2)系統(tǒng)的可觀測性3)同步和異步電路4)最優(yōu)化設(shè)計5)系統(tǒng)設(shè)計的藝術(shù)
數(shù)字系統(tǒng)的設(shè)計步驟:1)系統(tǒng)任務(wù)分析2)確定邏輯算法3)建立系統(tǒng)及子系統(tǒng)模型4)系統(tǒng)(或模塊)邏輯描述5)邏輯電路級設(shè)計及系統(tǒng)仿真6)系統(tǒng)的物理實現(xiàn) vhdl語言要素:數(shù)據(jù)對象、數(shù)據(jù)類型、各類操作數(shù)及運(yùn)算操作符 標(biāo)識符規(guī)則:以英文字母開頭,不連續(xù)使用下劃線“_”,不以下劃線結(jié)尾的,由26個大小寫英文字母、數(shù)字0~9及下劃線“_”組成的字符串,英文字母不區(qū)分大小寫,vhdl的保留字不能用于作為標(biāo)識符使用。
在進(jìn)程中,只能將信號列到敏感表,而不能將變量列入敏感表??梢娺M(jìn)程對信號敏感。vhdl中的數(shù)據(jù)類型:標(biāo)量型(包括:實數(shù)型、整數(shù)型、枚舉型、時間類型)、復(fù)合類型(數(shù)組型、記錄型)、存取型、文件類型
vhdl四大類數(shù)據(jù)類型又可分為兩類:預(yù)定義數(shù)據(jù)類型、用戶自定義數(shù)據(jù)類型(基于預(yù)定義數(shù)據(jù)類型)預(yù)定義數(shù)據(jù)類型:1)布爾型2)位數(shù)據(jù)類型(bit)3)位矢量(bit_vector)4)字符型5)整數(shù)型6)自然數(shù)和正整數(shù)型7)實數(shù)型8)字符串型9)時間型10)錯誤等級 數(shù)據(jù)類型:標(biāo)準(zhǔn)邏輯位std_logic、標(biāo)準(zhǔn)邏輯矢量std_logic_vector vhdl中六類基本順序語句:賦值語句、轉(zhuǎn)向控制語句、等待語句、子程序調(diào)用語句、返回語句、空操作語句。
在信號賦值時,當(dāng)統(tǒng)一進(jìn)程中,同一信號賦值目標(biāo)有多個賦值源時,信號賦值目標(biāo)獲得的是最后一個賦值,其前面相同的賦值目標(biāo)則不作任何變化。
轉(zhuǎn)向控制語句五種:if語句、case語句、loop語句、next語句、exit語句
當(dāng)執(zhí)行wait等待語句,程序?qū)⒈粧炱?,知道滿足結(jié)束條件后,程序重新開始執(zhí)行。已列出敏感量的進(jìn)程不能使用任何形式的wait語句 過程調(diào)用:執(zhí)行一個給定名字和參數(shù)的過程
過程名[([形參名=>] 實參表達(dá)式 {,[形參名=>]實參表達(dá)式})];過程調(diào)用步驟:1)將in和inout的形參值賦給調(diào)用過程中與之對應(yīng)的形參;2)執(zhí)行這個過程;3)將過程中in和inout的形參值賦給對應(yīng)的實參
函數(shù)調(diào)用:返還一個指定數(shù)據(jù)類型的值,函數(shù)的參量只能是輸入值 任何時刻,一個對象(信號、常量、變量)只有一個值,但可有多個屬性 預(yù)定義屬性描述:屬性測試項目名’屬性標(biāo)識符 clock’event and clock=’1’對上升沿的測試(或者not(clock’stable and clock=’1’))clock’event and clock=’0’對下降沿的測試(或者clock’stable and clock=’0’)并行語句在結(jié)構(gòu)體中的執(zhí)行是同步的。每一并行語句內(nèi)部的語句運(yùn)行方式:并行執(zhí)行、順序執(zhí)行。結(jié)構(gòu)體中并行語句有七種:1)并行信號賦值語句2)進(jìn)程語句3)塊語句4)條件信號賦值語句5)元件例化語句6)生成語句7)并行過程調(diào)用語句
process中規(guī)定了每個進(jìn)程語句在它的摸個敏感信號的值改變時都必須立即完成某個功能行為。進(jìn)程的激活必須由敏感信號表中定義的敏感信號的變化來啟動,否則必須有一個顯示的wait語句激活
并行信號賦值語句包括:簡單信號賦值語句、條件信號賦值語句、選擇信號賦值語句 簡單信號賦值語句:信號賦值語句<=表達(dá)式;
條件信號賦值語句:賦值目標(biāo)<=表達(dá)式 when 賦值條件 else(類似于if語句)表達(dá)式 when 賦值條件 else ?? 表達(dá)式;
選擇信號賦值語句:with 選擇表達(dá)式 select(類似于case語句)賦值目標(biāo)<=表達(dá)式 when 選擇值,表達(dá)式 when 選擇值,??
表達(dá)式 when 選擇值;
元件例化是使vhdl設(shè)計實體構(gòu)成自上而下層次化設(shè)計的一個重要途徑。組成部分:1)將一個現(xiàn)成的設(shè)計實體定義為一個元件的語句;2)此元件與當(dāng)前設(shè)計實體中的連接說明
元件例化語句中定義的例化元件的端口名與當(dāng)前系統(tǒng)的連接實體端口名的接口表達(dá)式表達(dá)有兩種方式:1)名字關(guān)聯(lián)方式:通過“=>”一一對應(yīng)2)位置關(guān)聯(lián)方式:按例化元件端口的定義順序?qū)⒗膶?yīng)的連接實體端口名一一列出
生成語句有一種復(fù)制功能。生成語句的四個組成部分:生成方式、說明部分、并行語句、標(biāo)號。
子程序是利用順序語句來定義和完成算法的。只能通過子程序調(diào)用及與子程序的界面端口進(jìn)行通信。包括過程(可單獨(dú)存在,多個返回值,有輸入/出雙向參數(shù))和函數(shù)(作為語句的一部分調(diào)用,一個返回值,所有參數(shù)都是輸入?yún)?shù)),可在vhdl的結(jié)構(gòu)體或程序包中任何位置調(diào)用子程序。
子程序特性:可重載性,即允許有許多重名的子程序,但這些子程序的參數(shù)類型及返回值數(shù)據(jù)類型不同
函數(shù)組成:函數(shù)首(作用:作為程序包的有關(guān)此函數(shù)的一個接口界面)、函數(shù)體
重載函數(shù):vhdl允許相同的函數(shù)名定義函數(shù),但要求函數(shù)中定義的操作數(shù)具有不同的數(shù)據(jù)類型。
過程組成部分:過程首、過程體。過程首不是必須的,過程體可以獨(dú)立存在和使用
過程首參數(shù)表用于對常數(shù)、變量、信號三類數(shù)據(jù)對象目標(biāo)作出說明,并用in、out、inout定義參數(shù)工作模式(信息流向)
一般把eda技術(shù)的發(fā)展分為cad、cae、eda三個階段。
eda設(shè)計流程包括設(shè)計準(zhǔn)備、設(shè)計輸入、設(shè)計處理、的設(shè)計驗證包括功能仿真、時序仿真、器件測試三個過程
eda的設(shè)計輸入包括文本輸入方式、圖形輸入方式、波形輸入方式三個過程
當(dāng)前最流行的并成為ieee標(biāo)準(zhǔn)的硬件描述語言包括vhdl 語言、verilog 和 hdl 語言
將硬件描述語言轉(zhuǎn)化為硬件電路的重要工具軟件稱為hdl 綜合器
基于eprom、e2prom和快閃存儲器件的可編程器件,在系統(tǒng)斷電后編程信息不丟失 基于sram結(jié)構(gòu)的可編程器件,在系統(tǒng)斷電后編程信息 會丟失
cpld器件中至少包括可編程邏輯宏單元、可編程 i/o 單元、可編程內(nèi)部連線三種結(jié)構(gòu) fpga的三種可編程電路分別是可編程邏輯塊 clb、輸入/輸出模塊 iob、互連資源三種結(jié)構(gòu) 根據(jù)邏輯功能塊的大小不同,可將fpga(可編程邏輯器件)分為細(xì)密度、粗密度兩類;據(jù)fpga內(nèi)部連線結(jié)構(gòu)的不同,可將fpga分為分段互連型、連續(xù)互連型兩類;據(jù)fpga采用的開關(guān)元件不同,可將fpga分一次編程型(otp)、可重復(fù)編程型(mtp)兩類
目前常見的可編程邏輯器件的編程和配置工藝包括電可擦存儲單元的 e2prom 或 flash 技術(shù)、sram 查找表的編程單元、反熔絲編程單元三種編程工藝。
vhdl設(shè)計實體的基本結(jié)構(gòu)由庫、程序包使用說明、設(shè)計實體的說明、結(jié)構(gòu)體說明、配置 等部分組成
實體、結(jié)構(gòu)體是設(shè)計實體的基本組成部分,他們可以構(gòu)成最基本的vhdl程序 在vhdl的端口聲明語句中,端口方向包括in out buffer inout vhdl的數(shù)據(jù)對象包括常數(shù) constant、變量 variable、信號 signal它們是用來存放各種類型數(shù)據(jù)的容器
vhdl的操作符包括邏輯操作符、關(guān)系操作符、算術(shù)操作符、符號操作符
vhdl的順序語句只能出現(xiàn)在進(jìn)程 process、函數(shù) function、過程 procedure中,按照書寫順序自上而下,一條一條執(zhí)行。
vhdl的進(jìn)程(process)語句是由 順序語句 組成的,但其本身卻是 并行語句 maxplus ⅱ支持圖形、符號、文本、波形等不同編輯方式
指定設(shè)計電路的輸入/輸出端口與目標(biāo)芯片引腳的連接關(guān)系的過程稱為引腳鎖定
在完成設(shè)計電路的輸入/輸出端口與目標(biāo)芯片引腳的鎖定后,再次對設(shè)計電路的仿真稱時序仿真或后仿真
圖形文件設(shè)計結(jié)束后一定要通過 仿真,檢查設(shè)計文件是否正確
以eda方式設(shè)計實現(xiàn)的電路設(shè)計文件,最終偶可以編程下載到 fpga 和 cpld 芯片中,完成硬件設(shè)計和驗證
max+plus的文本文件類型是(后綴名).vhd 在pc上利用vhdl進(jìn)行項目設(shè)計,不允許在 根目錄 下進(jìn)行,不惜在根目錄為設(shè)計建立一個工程目錄(文件夾)vhdl源程序的文件名應(yīng)與 實體名 相同,否則無法通過編譯 eda 名詞解釋
: 復(fù)雜可編程邏輯器件 : 硬件描述語言 :查找表(look-up-table):專用集成電路 :單芯片系統(tǒng)
:超高速硬件描述語言 :現(xiàn)場可編程門陣列 :寄存器傳輸級 :可編程片上系統(tǒng)
:嵌入式陣列塊 :邏輯陣列塊
:知識產(chǎn)權(quán)核
:電子設(shè)計自動化
:美國電氣電子工程師協(xié)會 :在系統(tǒng)編程
:參數(shù)可定制紅模塊庫 :串口(通用異步觸發(fā)器)
18.元件例化:將預(yù)先設(shè)計好的設(shè)計實體定義為一個元件,然后利用特定的語句將此元件與當(dāng)前的設(shè)計實體中的指定端口相連接,從而為當(dāng)前設(shè)計實體引入一個新的低一級的設(shè)計層次。19.簡要解釋 jtag,指出 jtag 的用途:jtag:聯(lián)合測試行動小組的簡稱,又意指其提出的一種硬件測試標(biāo)準(zhǔn),常用于器件測試、編程下載和配置等操作。
EDA基礎(chǔ)知識篇四
實驗一 2選1多路選擇器vhdl設(shè)計
一、實驗?zāi)康模?/p>
熟悉利用max+plusⅱ的vhdl文本設(shè)計流程全過程,學(xué)習(xí)簡單組合邏輯電路的設(shè)計、多層次電路的設(shè)計、仿真和硬件測試。
二、實驗內(nèi)容:
按照max+plusⅱ的文本輸入設(shè)計方法與流程完成2選1多路選擇器的輸入()和仿真測試等步驟,給出仿真波形圖。最后在實驗系統(tǒng)上進(jìn)行硬件測試,實際驗證本項設(shè)計的功能。
三、實驗步驟:
1、根據(jù)2選1多路選擇器的工作原理,編寫2選1的vhdl源程序,并輸入計算機(jī),文件名將源程序存盤。2選1多路選擇器的參考程序如下:
【例1-1】
entity mux21a is port(a, b : in bit;s : in bit;y : out bit);end entity mux21a;architecture one of mux21a is signal d,e : bit;begin d <= a and(not s);e <= b and s;y <= d or e;end architecture one;
【例1-2】
entity mux21a is port(a, b : in bit;s : in bit;y : out bit);end entity mux21a;architecture one of mux21a is begin y <=(a and(not s))or(b and s);end architecture one;
【例1-3】 entity mux21a is port(a, b, s: in bit;y : out bit);end entity mux21a;architecture one of mux21a is begin process(a,b,s)begin if s = '0' then y <= a;else y <= b;end if;end process;end architecture one;
2、對文件編譯后,再進(jìn)行波形仿真,完成輸入信號a、b、s 輸入電平的設(shè)置,啟動仿真器simulator,觀察輸出波形的情況。
3、鎖定引腳、編譯并編程下載。參選實驗電路模式5和附表一,鍵
1、鍵
2、鍵3為輸入信號a、b、s分別鎖定在ep1k30/50144-pin tqfp 目標(biāo)芯片的8、9、10引腳,輸出信號y鎖定在目標(biāo)芯片的20引腳。
4、硬件實測2選1多路選擇器的邏輯功能。按動gw48實驗板上的高低電平輸入鍵
1、鍵
2、鍵3,得到不同的s、b、a輸入組合;觀察輸出發(fā)光二極管d1的亮滅,檢查2選1多路選擇器的設(shè)計結(jié)果是否正確。
思考題
,并仿真設(shè)計結(jié)果。
實驗報告要求:
寫出實驗源程序,畫出仿真波形。分析實驗結(jié)果,以及它們的硬件測試實驗結(jié)果寫進(jìn)實驗報告。寫出心得體會。
實驗二 d觸發(fā)器的vhdl設(shè)計
一、實驗?zāi)康模?/p>
熟悉利用max+plusⅱ的vhdl文本設(shè)計流程全過程,學(xué)習(xí)簡單時序電路的設(shè)計、仿真和硬件測試。
二、實驗內(nèi)容:
按max+plusⅱ的文本輸入設(shè)計方法與流程完成d觸發(fā)器的vhdl設(shè)計、軟件編譯、仿真分析、硬件測試及詳細(xì)實驗過程。
d觸發(fā)器的vhdl設(shè)計的參考程序如下:
【例2-1】
library ieee;use ;entity dff1 is port(clk : in std_logic;d : in std_logic;q : out std_logic);end;architecture bhv of dff1 is begin signal q1 : std_logic;--類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點(diǎn) begin process(clk)begin if clk'event and clk = '1' then q1 <= d;end if;q <= q1;--將內(nèi)部的暫存數(shù)據(jù)向端口輸出 end process;end bhv;
三、實驗步驟:
1、打開文本編輯器,輸入d觸發(fā)器的vhdl源程序,文件名將源程序存盤。
2、選擇目標(biāo)器件ep1k30/50144-pin tqfp。
3、文件編譯后,再進(jìn)行波形仿真,完成輸入信號d、clk輸入電平的設(shè)置,啟動仿真器simulator,觀察輸出波形的情況。
4、鎖定引腳、編譯并編程下載。參選實驗電路模式5和附表一,鍵1為輸入信號d鎖定在ep1k30/50144-pin tqfp 目標(biāo)芯片的8引腳,輸出信號q和nq鎖定在目標(biāo)芯片的20和21引腳。
實驗報告要求:
寫出實驗源程序,畫出仿真波形。分析實驗結(jié)果,以及它們的硬件測試實驗結(jié)果寫進(jìn)實驗報告。寫出心得體會。
實驗三 含異步清0同步時鐘使能的4位加法計數(shù)器設(shè)計
一、實驗?zāi)康模?/p>
學(xué)習(xí)時序電路的設(shè)計、仿真和硬件測試,進(jìn)一步熟悉vhdl設(shè)計技術(shù)。
二、實驗原理:
圖4-1 含計數(shù)使能、異步復(fù)位和計數(shù)值并行預(yù)置功能4位加法計數(shù)器
圖4-1是一含計數(shù)使能、異步復(fù)位和計數(shù)值并行預(yù)置功能4位加法計數(shù)器,例4-1是其vhdl描述。由圖4-1所示,圖中間是4位鎖存器;rst是異步清信號,高電平有效;clk是鎖存信號;d[3..0]是4位數(shù)據(jù)輸入端。當(dāng)ena為'1'時,多路選擇器將加1器的輸出值加載于鎖存器的數(shù)據(jù)端;當(dāng)ena為'0'時將“0000”加載于鎖存器。
三、實驗內(nèi)容:
1、按照vhdl文本輸入設(shè)計方法和步驟,在max+plusii上對例4-1 進(jìn)行編輯、編譯、綜合、適配、仿真。說明例4-1中各語句的作用,詳細(xì)描述示例的功能特點(diǎn),給出其所有信號的時序仿真波形。
[例4-1] library ieee;use ;use ;entity cnt4b is port(clk : in std_logic;rst : in std_logic;ena : in std_logic;outy : out std_logic_vector(3 downto 0);cout : out std_logic);end cnt4b;architecture behav of cnt4b is signal cqi : std_logic_vector(3 downto 0);begin p_reg: process(clk, rst, ena)begin if rst = '1' then cqi <= “0000”;elsif clk'event and clk = '1' then if ena = '1' then cqi <= cqi + 1;end if;end if;
outy <= cqi;end process p_reg;--進(jìn)位輸出
cout<=cqi(0)and cqi(1)and cqi(2)and cqi(3);end behav;
2、引腳鎖定以及硬件下載測試。
建議選實驗電路模式5,用鍵8(pio7)控制rst;用鍵7(pio6)控制ena;計數(shù)溢出cout接發(fā)光管d8(pio15);outy是計數(shù)輸出,接數(shù)碼1(pio19-pio16,低位靠右);時鐘clk接clock0(引腳號為54),通過短路帽選擇4hz信號。引腳鎖定窗后進(jìn)行編譯、下載和硬件測試實驗。將實驗過程和實驗結(jié)果寫進(jìn)實驗報告。
結(jié)合第五章例題使學(xué)生能夠提高對具有計數(shù)使能、異步復(fù)位和計數(shù)值并行預(yù)置功能功能的計數(shù)器中各功能的實現(xiàn)的認(rèn)識、并能完成設(shè)計。
思考題1:
在例4-1 中是否可以不定義信號 cqi,而直接用輸出端口信號完成加法運(yùn)算,即 : outy <= outy + 1 ?
思考題2:
修改例4-1,用進(jìn)程語句和if語句實現(xiàn)進(jìn)位信號的檢出。
實驗報告要求:
寫出實驗源程序,畫出仿真波形。分析實驗結(jié)果,以及它們的硬件測試實驗結(jié)果和附加內(nèi)容實驗情況寫進(jìn)實驗報告。寫出心得體會。
實驗四 7段數(shù)碼顯示譯碼器設(shè)計
一、實驗?zāi)康模?/p>
學(xué)習(xí)7段數(shù)碼顯示譯碼器設(shè)計;學(xué)習(xí)多層次設(shè)計方法。
二、實驗原理:
7段數(shù)碼是純組合電路,通常的小規(guī)模專用ic,如74或4000系列的器件只能作十進(jìn)制bcd碼譯碼,然而數(shù)字系統(tǒng)中的數(shù)據(jù)處理和運(yùn)算都是2進(jìn)制的,所以輸出表達(dá)都是16進(jìn)制的,為了滿足16進(jìn)制數(shù)的譯碼顯示,最方便的方法就是利用vhdl譯碼程序在fpga或cpld中實現(xiàn)。本項實驗很容易實現(xiàn)這一目的。例5-1作為7段bcd碼譯碼器的設(shè)計,輸出信號led7s的7位分別接如圖5-1數(shù)碼管的7個段,高位在左,低位在右。例如當(dāng)led7s輸出為 “1101101” 時,數(shù)碼管的7個段:g、f、e、d、c、b、a分別接1、1、0、1、1、0、1,接有高電平的段發(fā)亮,于是數(shù)碼管顯示“5”。
三、實驗內(nèi)容:
1、說明例5-1中各語句的含義,以及該例的整體功能。在max+plusii上對以下該例進(jìn)行編輯、編譯、綜合、適配、仿真,給出其所有信號的時序仿真波形(提示:用輸入總線的方式給出輸入信號仿真數(shù)據(jù))。
[例5-1] library ieee;use ;entity decl7s is port(a : in std_logic_vector(3 downto 0);led7s : out std_logic_vector(6 downto 0));end;architecture one of decl7s is begin process(a)begin case a(3 downto 0)is when “0000” => led7s <= “0111111”;--x“3f”?0 when “0001” => led7s <= “0000110”;--x“06”?1 when “0010” => led7s <= “1011011”;--x“5b”?2 when “0011” => led7s <= “1001111”;--x“4f”?3 when “0100” => led7s <= “1100110”;--x“66”?4 when “0101” => led7s <= “1101101”;--x“6d”?5 when “0110” => led7s <= “1111101”;--x“7d”?6 when “0111” => led7s <= “0000111”;--x“07”?7 when “1000” => led7s <= “1111111”;--x“7f”?8 when “1001” => led7s <= “1101111”;--x“6f”?9 when “1010” => led7s <= “1110111”;--x“77”?10 when “1011” => led7s <= “1111100”;--x“7c”?11 when “1100” => led7s <= “0111001”;--x“39”?12 when “1101” => led7s <= “1011110”;--x“5e”?13 when “1110” => led7s <= “1111001”;--x“79”?14 when “1111” => led7s <= “1110001”;--x“71”?15 when others => null;end case;end process;end;
2、引腳鎖定以及硬件下載測試。建議選實驗電路模式6,用數(shù)碼8顯示譯碼輸出(pio46--pio40),鍵
8、鍵
7、鍵
6、鍵5四位控制輸入,硬件驗證譯碼器的工作性能。
3、用vhdl例化語句(參考實驗1中的1位全加vhdl文本輸入設(shè)計)按圖5-2 的方式,以例4-1和例5-1為底層元件,完成頂層文件設(shè)計,并重復(fù)以上實驗過程。注意圖5-2中的tmp是4位總線,led是7位總線。對于引腳鎖定和實驗,建議仍選實驗電路模式6,用數(shù)碼8顯示譯碼輸出,用鍵3作為時鐘輸入(每按2次鍵為1個時鐘脈沖),或直接時鐘信號clock0。
實驗報告要求:
寫出實驗源程序,畫出仿真波形。分析實驗結(jié)果,以及它們的硬件測試實驗結(jié)果寫進(jìn)實驗報告。寫出心得體會。
實驗五 2位數(shù)的十進(jìn)制計數(shù)器的設(shè)計
一、實驗?zāi)康模?/p>
通過實驗讓讀者掌握復(fù)雜時序邏輯電路的eda原理圖輸入設(shè)計法和文本輸入設(shè)計法,通過電路仿真,進(jìn)一步了解有時鐘使能的2位十進(jìn)制計數(shù)器的功能和特性。
二、實驗原理:
有時鐘使能的2位十進(jìn)制計數(shù)器是頻率計的核心元件之一,這里用2個74162來設(shè)計完成。
三、實驗內(nèi)容:
1.用文本輸入設(shè)計方法編寫2位十進(jìn)制計數(shù)器的vhdl源程序,文件名存盤,參考程序如下: library ieee;
use ;use ;entity twin10_v is port(clrn,ent1,enp,clk : in std_logic;
qa,qb
: out std_logic_vector(3 downto 0);
co
: out std_logic);end twin10_v;architecture a of twin10_v is signal ent2 : std_logic;begin
process(clk)
variable tmpa,tmpb :std_logic_vector(3 downto 0);
begin if(clk'event and clk='1')then
if clrn='0' then tmpa := “0000”;tmpb := “0000”;
elsif(ent1 and enp)='1' then
if tmpa=“1001” then
tmpa:=“0000”;
if tmpb=“1001” then tmpb:=“0000”;
else tmpb:= tmpb+1;
end if;
else tmpa := tmpa+1;
end if;
end if;
end if;
qa <= tmpa;ent2<=tmpa(0)and tmpa(3)and ent1;
qb <= tmpb;co<= tmpb(0)and tmpb(3)and ent2;end process;end a;2.同樣編譯后再進(jìn)行波形仿真
按照波形仿真的操作步驟,對2位十進(jìn)制計數(shù)器進(jìn)行波形仿真。
3.鎖定引腳、編譯并編程下載。參選實驗電路模式5和附表一,引腳鎖定目標(biāo)芯片為ep1k30/50144-pin tqfp 實驗報告要求:
寫出實驗源程序,畫出仿真波形。對設(shè)計的2位十進(jìn)制計數(shù)器進(jìn)行實驗結(jié)果的分析,以及硬件測試實驗結(jié)果寫進(jìn)實驗報告。寫出心得體會。
EDA基礎(chǔ)知識篇五
eda基礎(chǔ)總結(jié)
綜述部分
的中文全稱為電子設(shè)計自動化,英文全名為electronic design automation。平臺常用的兩種輸入電路的方法是:電路原理圖輸入法、hdl輸入法。平臺工作流程:電路輸入、綜合優(yōu)化、功能仿真、布局布線、門級仿真。
數(shù)字電路部分
中常用的仿真語言為verilog和vhdl。
其英文全名為vhsic hardware description language,而vhsic則是very high speed intergeraterd circuit的縮寫詞,意為甚高速集成電路,故vhdl其準(zhǔn)確的中文譯名為甚高速集成電路的硬件描述語言。
g hdl其英文全名為verilog hardware decription language,hdl中文譯名為硬件描述語言。
g和vhdl的比較
共同點(diǎn):能形式化地抽象表示電路的行為和結(jié)構(gòu);支持邏輯設(shè)計中層次與范圍的描述;可借用高級語言的精巧結(jié)構(gòu)來簡化電路行為的描述;具有電路仿真與驗證機(jī)制以保證設(shè)計的正確性;支持電路描述由高層到低層的綜合轉(zhuǎn)換;硬件描述與實現(xiàn)工藝無關(guān);便于文檔管理;易于理解和設(shè)計重用。
不同點(diǎn):verilog在系統(tǒng)級抽象方面略差,vhdl在門級開關(guān)電路方面略差。
5.軟核、固核和硬核
軟核:功能經(jīng)過驗證的、可綜合的、實現(xiàn)后電路結(jié)構(gòu)總門數(shù)在5000門以上的verilog模型。
固核:在某一種現(xiàn)場可編程門列器件上實現(xiàn)的經(jīng)驗證是正確的,且總門數(shù)在5000門以上的電路結(jié)構(gòu)編碼文件。
在某一種專用集成電路工藝的器件上實現(xiàn)的,經(jīng)驗證是正確的,且總門數(shù)在5000門以上的電路結(jié)構(gòu)版圖掩膜。6.自頂向下(top down)設(shè)計
7.自底向上(down top)設(shè)計
8.名詞解釋:
asic:application specific integrated circuit,專用集成電路。
fpga:field programmable gate array,現(xiàn)場可編程門陣列。pld:programmable logic device,可編程邏輯器件。
verilog編程題: 數(shù)據(jù)比較器(2位)//數(shù)據(jù)比較器
module compare(equal, a, b);input a,b;output equal;reg equal;always @(a or b)if(a == b)equal = 1;else equal = 0;endmodule
//數(shù)據(jù)比較器測試代碼 `timescale 1ns/1ns `include “./1-1.v” module t;reg a,b;wire equal;initial begin a=0;b=0;#100 a=0;b=1;#100 a=1;b=1;#100 a=1;b=0;#100 a=0;b=0;#100 $stop;end
compare m(.equal(equal),.a(a),.b(b));endmodule
數(shù)據(jù)比較器(8位)
module compare8(equal, a, b);input [7:0]a, b;output equal;reg equal;always @(a or b)if(a > b)begin equal = 1;end else begin equal = 0;end endmodule 分頻器
module half_clk(reset, clk_in, clk_out);input clk_in, reset;output clk_out;reg clk_out;
always @(posedge clk_in)begin if(!reset)clk_out = 0;else clk_out = ~clk_out;end endmodule
10m時鐘分頻為500k module fdivision(reset, mb, kb);input mb, reset;output kb;reg kb;reg [7:0] j;
always @(posedge mb)if(!reset)begin kb <= 0;j <= 0;end else begin if(j == 19)begin j <= 0;kb <= ~kb;end else j <= j+1;end endmodule
譯碼電路
`define plus 3'd0 `define minus 3'd1 `define band 3'd2 `define bor 3'd3 `define unegate 3'd4
module alu(out, opcode, a, b);output[7:0] out;reg[7:0] out;input[2:0] opcode;input[7:0] a,b;
always @(opcode or a or b)begin case(opcode)`plus: out = a + b;`minus: out = a-b;`band: out = a & b;`bor: out = a | b;`unegate: out = ~a;default: out = 8'hx;endcase end endmodule
八路數(shù)據(jù)選擇器
module selecting8(addr, in1, in2, in3, in4, in5, in6, in7, in8, dataout, reset);input [2:0] addr;input [3:0] in1,in2,in3,in4,in5,in6,in7,in8;input reset;output [3:0] dataout;reg [3:0] dataout;
always @(addr or in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8 or reset)begin if(!reset)case(addr)3'b000: dataout = in1;3'b001: dataout = in2;3'b010: dataout = in3;3'b011: dataout = in4;3'b100: dataout = in5;3'b101: dataout = in6;3'b110: dataout = in7;3'b111: dataout = in8;endcase else dataout = 0;end endmodule
邏輯運(yùn)算電路
module tryfunct(clk, n, result, reset);output[31:0] result;input[3:0] n;input reset, clk;reg[31:0] result;
always @(posedge clk)begin if(!reset)result <=0;else begin result <= n*factorial(n)/((n*2)+1);end end
function [31:0] factorial;input [3:0] operand;reg [3:0] index;begin factorial = operand ? 1:0;for(index = 2;index <= operand;index = index + 1)factorial = index *factorial;end endfunction endmodule
module tryfunct(clk, n, result, reset);output[31:0] result;input[3:0] n;input reset, clk;reg[31:0] result;
always @(posedge clk)begin if(!reset)result <=0;else begin result <= n*factorial(n)/((n*2)+1);end end
function [31:0] factorial;input [3:0] operand;reg [3:0] index;begin factorial = operand ? 1:0;for(index = 2;index <= operand;index = index + 1)factorial = index *factorial;end endfunction endmodule
高速排序組合邏輯
module sort4(ra, rb, rc, rd, a, b, c, d);output[3:0] ra, rb, rc, rd;input[3:0] a, b, c, d;reg[3:0] ra, rb, rc, rd;reg[3:0] va, vb, vc, vd;
always @(a or b or c or d)begin {va, vb, vc, vd} = {a, b, c, d};sort2(va, vc);sort2(vb, vd);sort2(va, vb);sort2(vc, vd);sort2(vb, vc);{ra, rb, rc, rd} = {va, vb, vc, vd};end
task sort2;input[3:0]x, y;reg[3:0] tmp;if(x > y)begin tmp = x;x = y;y = tmp;end endtask endmodule
檢測5位二進(jìn)制序列10010 module seqdet(x, z, clk, rst, state);input x, clk, rst;output z;output[2:0] state;reg[2:0] state;wire z;
parameter idle = 'd0, a = 'd1, b = 'd2, c = 'd3, d = 'd4, e = 'd5, f = 'd6, g = 'd7;
assign z =(state == e && x == 0)? 1:0;
always @(posedge clk)if(!rst)begin state <= idle;end else case(state)idle: if(x == 1)begin state <= a;end a: if(x == 0)begin state <= b;end b: if(x == 0)begin state <= c;end else begin state <= f;end c: if(x == 1)begin state <= d;end else begin state <= g;end d: if(x == 0)begin state <= e;end else begin state <= a;end e: if(x == 0)begin state <= c;end else begin state = a;end f: if(x == 1)begin state <= a;end else begin state <= b;end g: if(x == 1)begin state <= f;end default: state = idle;endcase endmodule
模擬電路部分
1.目前,集成電路最常用的材料是單晶硅。
2.集成電路的生產(chǎn)由設(shè)計、制造、封裝三部分組成。
3.集成電路中基片主要制作工藝為:光刻、擴(kuò)散、注入、刻蝕、鍵合。
4.集成電路中基片的制造步驟為:光刻、擴(kuò)散、注入、刻蝕。
5.衡量集成電路產(chǎn)業(yè)水平的兩個主要參數(shù)為:硅晶圓片直徑和光刻精度(特征尺寸)。這兩個參數(shù)在業(yè)界達(dá)到的水平為:硅晶圓片直徑12英寸(300mm),光刻精度0.13um。主流水平為:硅晶圓片直徑200mm,光刻精度0.18um。
6.模擬電路中常用的仿真算法是spice,英文全名為simulation program with integrated circuit emphasis。
7.世界上設(shè)計eda軟件實力最強(qiáng)的兩個公司為cadence和synopsys。其中,cadence的優(yōu)勢為電路布局布線,synopsys的優(yōu)勢為邏輯綜合仿真。
nch是加拿大iit公司退出的電子線路仿真軟件。它可以對模擬、數(shù)字和模擬/數(shù)字混合電路進(jìn)行仿真,克服了傳統(tǒng)電子產(chǎn)品的設(shè)計受實驗室客觀條件限制的局限性,用虛擬的元件搭接各種電路,用虛擬的儀表進(jìn)行各種參數(shù)和性能指標(biāo)的測試。特點(diǎn)如下:(1)系統(tǒng)集成度高,界面直觀,操作方便。(2)具備模擬、數(shù)字及模擬/數(shù)字混合電路仿真。(3)提供較為豐富的元器件庫。(4)電路分析手段完備。(5)輸出方式靈活。(6)兼容性好。語言舉例: example
vcc 8 0 12
**** 文件名 任意名都可以 但必須要有****
**** 電源正極接于節(jié)點(diǎn)8 負(fù)極接于0 電壓為12v **** vee 0 9 12
**** 電源正極接于節(jié)點(diǎn)0,負(fù)接接于節(jié)點(diǎn)9,電壓為12v;**** vin 1 0 ac 1 sin(0 0.1 5meg)
**** 信號源vin 接于1 和接點(diǎn)0;交流1v 進(jìn)行交流分析 同時加一個正弦信號 直流偏置為0,振幅為0.1v頻率為5m的交流信號源,進(jìn)行瞬態(tài)分析;**** rc1 8 4 10k
rc2 8 5 10k
rs 2 1 1k
rs1 8 7 20k
rs2 3 0 1k
**** 電阻rc1 分別接于節(jié)點(diǎn)8 節(jié)點(diǎn)4;阻值為10k;**** **** 電阻rc2 分別接于節(jié)點(diǎn)8 節(jié)點(diǎn)5;阻值為10k;**** **** 電阻rs 分別接于節(jié)點(diǎn)1 節(jié)點(diǎn)0;阻值為1k;**** **** 電阻rs1 分別接于節(jié)點(diǎn)8 節(jié)點(diǎn)7 阻值為20k;**** **** 電阻rs2 分別接于節(jié)點(diǎn)3 節(jié)點(diǎn)0 阻值為1k;**** q1 4 2 6 mod1
**** 三極管q1 cbe 分別接于節(jié)點(diǎn) 4 2 6 模型為mod1**** q2 5 3 6 mod1
**** 三極管q2 cbe 分別接于節(jié)點(diǎn) 5 3 6 模型為mod1**** q3 6 7 9 mod1
**** 三極管q3 cbe 分別接于節(jié)點(diǎn) 6 7 9 模型為mod1**** q4 7 7 9 mod1
**** 三極管q4 cbe 分別接于節(jié)點(diǎn) 7 7 9 模型為mod1****.op
**** 求出直流工作點(diǎn).本電路共有9個節(jié)點(diǎn);溫度值為27度;****.dc vin-.15.15.01
**** dc為直流分析語句,分析輸入電壓從-0.15v到0.15v掃描特性,每0.1v作一次分析;****.print dc v(4)v(5)
****.print 為打印語句,其中dc是打印直流內(nèi)容,這里規(guī)定打印節(jié)點(diǎn)4和5上的電位,既相對地參考點(diǎn)的電壓隨輸入的變化關(guān)系;****.plot dc v(4)v(5)
****.plot為繪圖語句,其中dc表示繪制直流分析的傳輸特性,說明是繪制v(4)v(5)的輸出電壓和vin關(guān)系曲線;****.tf v(5)vin
****.tf是轉(zhuǎn)移函數(shù)分析語句,該句表示計算直流分析時,小信號輸出電壓v(5)和輸入電壓vin的轉(zhuǎn)移函數(shù)值,輸入電阻和輸出電阻;****.ac dec 10 25k 250meg
****.ac是交流分析語句,是在規(guī)定的頻率范圍內(nèi)從25k到250m進(jìn)行頻域分析dec表示按數(shù)量級變化,10表示每一數(shù)量級中取的分析點(diǎn)數(shù)目;****.print ac vm(5)vp(5)
**** 打印ac分析vm(5)vp(5)的取點(diǎn)數(shù);****.plot ac vm(5)vp(5)
**** 繪制ac分析vm(5)vp(5)的取點(diǎn)數(shù);****.tran 4n 100n 1n
****.tran是瞬態(tài)分析語句,并規(guī)定了打印或繪圖時間增量為4n秒,計算終止時間為100n秒,打印或繪圖開始時間1ns*;****.print tran v(5)v(4)
****.打印出4.5點(diǎn)的電壓隨時間變化;****.plot tran v(5)v(4)
****.繪圖出節(jié)點(diǎn)4.5的電壓隨時間變化;****.end
**** 結(jié)束語句...一定要有;****