版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),1,第10章 VHDL入門(mén),2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),2,§1 VHDL背景,傳統(tǒng)數(shù)字電路設(shè)計(jì)方法不適合設(shè)計(jì)大規(guī)模的系統(tǒng)。工程師不容易理解原理圖設(shè)計(jì)的功能。眾多軟件公司開(kāi)發(fā)研制了具有自己特色的電路硬件描述語(yǔ)言(Hardware Description Language,HDL),存在著很大的差異,工程師一旦選用某種硬件描述語(yǔ)言作為輸入工具,就被束縛在這個(gè)硬件設(shè)計(jì)環(huán)境之中。因此,硬
2、件設(shè)計(jì)工程師需要一種強(qiáng)大的、標(biāo)準(zhǔn)化的硬件描述語(yǔ)言,作為可相互交流的設(shè)計(jì)環(huán)境。,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),3,美國(guó)國(guó)防部在80年代初提出了VHSIC(Very High Speed Integrated Circuit)計(jì)劃,其目標(biāo)之一是為下一代集成電路的生產(chǎn),實(shí)現(xiàn)階段性的工藝極限以及完成10萬(wàn)門(mén)級(jí)以上的設(shè)計(jì),建立一項(xiàng)新的描述方法。1981年提出了一種新的HDL,稱(chēng)之為VHSIC Hardware Description Lang
3、uage,簡(jiǎn)稱(chēng)為VHDL,這種語(yǔ)言的成就有兩個(gè)方面:描述復(fù)雜的數(shù)字電路系統(tǒng)成為國(guó)際的硬件描述語(yǔ)言標(biāo)準(zhǔn),2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),4,VHDL的發(fā)展歷程,1981年6月,美國(guó)成立了VHDL工作小組;1983年6月,由 Intermitrics, IBM和 Texas Instrument組成開(kāi)發(fā)小組,任務(wù)是:提出語(yǔ)言版本;開(kāi)發(fā)其軟件環(huán)境。1987年12月,IEEE公布了 IEEE-1076 作為HDL的第一個(gè)標(biāo)
4、準(zhǔn);1993年, IEEE公布了VHDL_93;1999年: VHDL_AMS(Analog Mixed Signal)1999年: VHDL1076.6(RTL可綜合子集);2000年1月公布了VHDL1076-2000;2002年5月公布了VHDL1076-2002;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),5,VHDL的優(yōu)點(diǎn),用于設(shè)計(jì)復(fù)雜的、多層次的設(shè)計(jì)。支持設(shè)計(jì)庫(kù)和設(shè)計(jì)的重復(fù)使用與硬件獨(dú)立,一個(gè)設(shè)計(jì)可用于不同的硬件結(jié)構(gòu)
5、,而且設(shè)計(jì)時(shí)不必了解過(guò)多的硬件細(xì)節(jié)。有豐富的軟件支持VHDL的綜合和仿真,從而能在設(shè)計(jì)階段就能發(fā)現(xiàn)設(shè)計(jì)中的Bug,縮短設(shè)計(jì)時(shí)間,降低成本。更方便地向ASIC過(guò)渡VHDL有良好的可讀性,容易理解。,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),6,§2 設(shè)計(jì)流程,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),7,,ENTITY full_adder ISPORT ( a,b,cin:IN BIT; s,cout
6、:OUT BIT);END full_adder;----------------------------------------------------------------------------ARCHITECTURE dataflow OF full_adder ISBEGINs <= a XOR B XOR cin; cout <= (a AND b) OR (a AND cin)
7、 OR (b AND cin)END dataflow;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),8,VHDL代碼到電路的轉(zhuǎn)換,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),9,VHDL與計(jì)算機(jī)語(yǔ)言的區(qū)別運(yùn)行的基礎(chǔ)計(jì)算機(jī)語(yǔ)言是在CPU+RAM構(gòu)建的平臺(tái)上運(yùn)行VHDL設(shè)計(jì)的結(jié)果是由具體的邏輯、觸發(fā)器組成的數(shù)字電路執(zhí)行方式計(jì)算機(jī)語(yǔ)言基本上以串行的方式執(zhí)行VHDL在總體上是以并行方式工作驗(yàn)證方式計(jì)算機(jī)語(yǔ)言主要關(guān)注于變量值的變化VHDL要實(shí)現(xiàn)
8、嚴(yán)格的時(shí)序邏輯關(guān)系,§3 VHDL語(yǔ)言,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),10,§3.1 VHDL標(biāo)識(shí)符(Identifiers),基本標(biāo)識(shí)符由字母、數(shù)字和下劃線(xiàn)組成第一個(gè)字符必須是字母最后一個(gè)字符不能是下劃線(xiàn)不允許連續(xù)2個(gè)下劃線(xiàn)保留字(關(guān)鍵字)不能用于標(biāo)識(shí)符大小寫(xiě)是等效的,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),11,§3.2 VHDL數(shù)據(jù)對(duì)象,常數(shù)(Constant)固定值,不能在程序中被改變
9、增強(qiáng)程序的可讀性,便于修改程序在綜合后,連接到電源和地可在Library、Entity、Architecture、Process中進(jìn)行定義,其有效范圍也相應(yīng)限定語(yǔ)法:constant 常量名 : 類(lèi)型[取值范圍][:=常數(shù)];constant data_bus_width: integer := 8 ;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),12,信號(hào)(Signals)代表連線(xiàn),Port也是一種信號(hào)沒(méi)有方向性,可給它賦值,也
10、可當(dāng)作輸入在Entity中和Architecture中定義設(shè)定的初始值在綜合時(shí)沒(méi)有用,只是在仿真時(shí)在開(kāi)始設(shè)定一個(gè)起始值。用 <= 對(duì)信號(hào)進(jìn)行賦值語(yǔ)法:signal 信號(hào)名 :類(lèi)型[取值范圍][:=初值];signal count:bit_vector(3 downto 0):=“0011”;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),13,變量(Variable)臨時(shí)數(shù)據(jù),沒(méi)有物理意義只能在Process和Functio
11、n中定義,并只在其內(nèi)部有效要使其全局有效,先轉(zhuǎn)換為Signal。用 := 進(jìn)行賦值語(yǔ)法:variable 變量名 :類(lèi)型[取值范圍][:=初值]; variable result : std_logic := ‘0’;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),14,信號(hào)與變量的區(qū)別,一、變量1.變量是對(duì)暫時(shí)數(shù)據(jù)進(jìn)行局部存儲(chǔ)的。2.變量的說(shuō)明和賦值只能在順序部分進(jìn)行,即只能在進(jìn)程、 過(guò)程或函數(shù)中進(jìn)行。
12、3.變量的賦值具有立即性,不包含延時(shí)信息,更像高級(jí)語(yǔ)言。4.如果需要將變量的值用于進(jìn)程之外,只要將變量的值賦予 相同類(lèi)型的信號(hào)即可。二、 信號(hào)1.有一定的延時(shí)性。2.進(jìn)程只對(duì)信號(hào)敏感,不對(duì)變量敏感。,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),15,信號(hào)與變量的區(qū)別,architecture a of start is signal tmp : std_logic;begin process(a_bus)
13、begin tmp <= '1'; for i in 3 downto 0 loop tmp <= a_bus(i) and tmp; end loop; carryout <= tmp; end process;end a;,architecture a of start is begin process(a_bus)
14、 variable tmp:std_logic; begin tmp := '1'; for i in 3 downto 0 loop tmp := a_bus(i) and tmp; end loop; carryout <= tmp; end process;end a;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),16
15、,§3.3 VHDL數(shù)據(jù)類(lèi)型,位(bit): 邏輯‘0’ 或 ‘1’布爾(boolean)整數(shù)(integer): -(231-1)~+(231-1)正整數(shù)(positive)自然數(shù)(natural)實(shí)數(shù)(real)字符(character):‘7’、‘A’時(shí)間(time): ns, us, sec, min, hr物理類(lèi)型: 用于表示時(shí)間和電壓等物理量。,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),17,VHDL數(shù)據(jù)類(lèi)
16、型-枚舉,列舉數(shù)據(jù)對(duì)象可能存在的值,一般用于定義狀態(tài)機(jī)的狀態(tài)type states is (idle, start, running, pause, stop);signal current_state : states;IEEE1076標(biāo)準(zhǔn)中預(yù)定義了兩個(gè)枚舉類(lèi)型type boolean is (False, True);type bit is (‘0’, ‘1’) ;signal a : bit ;,2024/3/17,邏
17、輯設(shè)計(jì)基礎(chǔ),18,IEEE1164標(biāo)準(zhǔn)中預(yù)定義了一個(gè)枚舉類(lèi)型: type std_logic is (‘U’, ‘X’,‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-’); ‘U’ 初始不定值 ‘X’ ‘‘強(qiáng)” 不確定值 (綜合后為不確定值) ‘0’ ‘‘強(qiáng)” 0 (綜合后為0) ‘1’ ‘‘強(qiáng)” 1 (綜合后為1)
18、‘Z’ 高阻態(tài) (綜合后為三態(tài)緩沖器) ‘W’ ‘‘弱” 不確定值 ‘L’ ‘‘弱” 0 ‘H’ ‘‘弱” 1 ‘-’ 不可能出現(xiàn)的情況 注意:這里的大小寫(xiě)是敏感的,VHDL數(shù)據(jù)類(lèi)型-枚舉,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),19,標(biāo)量---單個(gè)位BITSTD_LOGICSTD_ULOGICBOOLEAN矢量BIT_VECTO
19、RSTD_LOGIC_VECTORSTD_ULOGIC_VECTORINTEGER , SIGNED , UNSIGNED,VHDL數(shù)據(jù)類(lèi)型-矢量和標(biāo)量,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),20,VHDL數(shù)據(jù)類(lèi)型-復(fù)合類(lèi)型,數(shù)組(array)多個(gè)相同類(lèi)型成員組成的隊(duì)列,一般用于定義數(shù)據(jù)總線(xiàn)、地址總線(xiàn)等。VHDL中使用數(shù)組,必須先定義數(shù)組類(lèi)型和數(shù)組對(duì)象。語(yǔ)法:type 數(shù)組類(lèi)型名 is array 下標(biāo)范圍 of 元素
20、類(lèi)型; type matrix4x3 is array (1 to 4,1 to 3) of integer;signal matrixA:matrix4x3 :=((1,2,3),(4,5,6),(7,8,9),(10,11,12)),2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),21,VHDL數(shù)據(jù)類(lèi)型-復(fù)合類(lèi)型,記錄類(lèi)型(record)相同或不同類(lèi)型的元素組成,類(lèi)似C中的結(jié)構(gòu)體具有模型抽
21、象能力,用于描述一個(gè)功能模塊type iocell is record Enable :bit; DataBus :bit_vector(7 downto 0); end record; singal bus : iocell; bus.Enable <= ‘1’; bus.DataBus <= “00110110”;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),22,--eq
22、comp4 is a four bit equality comparatorLibrary IEEE;use IEEE.std_logic_1164.all;entity eqcomp4 isport(a, b:in std_logic_vector(3 downto 0); equal :out std_logic);end eqcomp4;architecture dataflow of e
23、qcomp4 isbegin equal <= ‘1’ when a=b else ‘0’;End dataflow;,VHDL 大小寫(xiě)不敏感,eqcomp4.vhd,包,,實(shí)體,,構(gòu)造體,,文件名和實(shí)體名一致,,,每行;結(jié)尾,,關(guān)鍵字begin,關(guān)鍵字end后跟實(shí)體名,關(guān)鍵字end后跟構(gòu)造體名,,,,庫(kù),,§3.4 VHDL代碼結(jié)構(gòu),2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),23,實(shí)體(entity),描述此設(shè)計(jì)
24、功能輸入輸出端口(port)在層次化設(shè)計(jì)時(shí),port為模塊之間的接口在芯片級(jí),則代表具體芯片的管腳,entity eqcomp4 isport (a, b : in std_logic_vector(3 downto 0) ; equal : out std_logic );end eqcomp4;,語(yǔ)法:entity 實(shí)體名 is[ port (端口信號(hào)說(shuō)明);]end [
25、entity] [實(shí)體名];,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),24,實(shí)體-端口的模式,輸入( input)輸出(output)雙向(inout):可代替所有其他模式,但降低了程序的可讀性,一般用于與CPU的數(shù)據(jù)總線(xiàn)接口緩沖(buffer):與output類(lèi)似,但允許該管腳名作為一些邏輯的輸入信號(hào),2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),25,Out與Buffer的區(qū)別,Entity test1 is port(a: in s
26、td_logic; b,c: out std_logic ); end test1; architecture a of test1 is begin b <= not(a); c <= b;--Error end a;,Entity test2 is port(a: in std_logic;
27、 b : buffer std_logic; c : out std_logic ); end test2; architecture a of test2 is begin b <= not(a); c <= b; end a;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),26,結(jié)構(gòu)體(
28、Architecture),描述實(shí)體的內(nèi)部操作結(jié)構(gòu)體有三種描述方式行為描述(behavioral)數(shù)據(jù)流描述(dataflow)結(jié)構(gòu)化描述(structural),語(yǔ)法:architecture 結(jié)構(gòu)體名 of 實(shí)體名 is [定義語(yǔ)句] begin結(jié)構(gòu)體的主體部分end 結(jié)構(gòu)體名;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),27,結(jié)構(gòu)體-行為描述,Architecture behavioral of
29、eqcomp4 is begincomp: process (a,b) beginif a=b then equal <= ‘1’; else equal <=‘0’;end if; end process comp;end behavioral ;,高層次的功能描述,不必考慮在電路中到底是怎樣實(shí)現(xiàn)的。,實(shí)體名稱(chēng),2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),28,結(jié)構(gòu)體
30、-數(shù)據(jù)流描述描述輸入信號(hào)經(jīng)過(guò)怎樣的變換得到輸出信號(hào),Architecture dataflow1 of eqcomp4 is begin equal <= ‘1’ when a=b else ‘0’;end dataflow1;,Architecture dataflow2 of eqcomp4 is beginequal <= not(a(0) xor b(0))
31、 and not(a(1) xor b(1)) and not(a(2) xor b(2)) and not(a(3) xor b(3));end dataflow2;,當(dāng)a和b的寬度發(fā)生變化時(shí),需要修改設(shè)計(jì),當(dāng)寬度過(guò)大時(shí),設(shè)計(jì)非常繁瑣,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),29,結(jié)構(gòu)體-結(jié)構(gòu)化描述,architecture struct of eqco
32、mp4 isbegin U0:xnor2 port map(a(0),b(0),x(0)); U1:xnor2 port map(a(1),b(1),x(1)); U2:xnor2 port map(a(2),b(2),x(2)); U3:xnor2 port map(a(3),b(3),x(3)); U4:and4 port map(x(0),x(1),x(2),x(3),equal);
33、end struct;,類(lèi)似于電路的網(wǎng)絡(luò)表,將各個(gè)器件通過(guò)語(yǔ)言的形式進(jìn)行連接,與電路有一一對(duì)應(yīng)的關(guān)系。一般用于大規(guī)模電路的層次化設(shè)計(jì)時(shí)。,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),30,三種描述方式的比較,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),31,§3.5 運(yùn)算操作符和屬性,賦值運(yùn)算符 給矢量中的某些位賦值、或?qū)δ承┪恢獾?其它(用OTHERS表示)位賦值。VARIABLE y : STD_LOGIC_VECT
34、OR (3 DOWNTO 0) ;SIGNAL w : STD_LOGIC_VECTOR(0 TO 7) ;Y := “0000” ;w ‘1’,OTHERS => ‘0’) ;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),32,邏輯運(yùn)算符AND、OR、NAND、NOR、XOR、NOT關(guān)系運(yùn)算符=、/=、、=算術(shù)運(yùn)算符+、-、*、/、MOD、REM、ABS移位運(yùn)算sll srl sla sra ro
35、l ror并置(連接)運(yùn)算符&(,,,,),2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),33,屬性(Attributes),用于獲取數(shù)據(jù)的相關(guān)信息數(shù)值類(lèi)屬性d’LOW :返回?cái)?shù)組索引的下限值d’HIGH :返回?cái)?shù)組索引的下限值d’LEFT :返回?cái)?shù)組索引的左邊界值d’RIGHT :返回?cái)?shù)組索引的右邊界值d’LENGTH :返回矢量的長(zhǎng)度值d’RANGE :返回矢量的位寬范圍
36、d’REVERSE_RANGE :按相反的次序,返回 矢量的位寬范圍,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),34,signal d: STD_LOGIC_VECTOR (7 downto 0);則有:d’LOW = 0d’HIGH = 7d’LEFT = 7d’RIGHT = 0d’LENGTH = 8
37、d’RANGE = (7 downto 0)d’REVERSE_RANGE = (0 to 7);,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),35,屬性(Attributes)–續(xù),信號(hào)類(lèi)屬性s’EVENT :s的值發(fā)生了變化,則返回值為T(mén)RUEs’STABLE :s的值保持穩(wěn)定,則返回值為T(mén)RUEs’ACTIVE :s的值等于‘1’,則返回值為T(mén)RUEs’QUIET :指定時(shí)間內(nèi)無(wú)變化,則返回TUREs’LA
38、ST_EVENT:上次事件發(fā)生到現(xiàn)在所經(jīng)歷的時(shí)間值s’LAST_ACTIVE:最后一次s=‘1’到現(xiàn)在所經(jīng)歷的時(shí)間值s’LAST_VALUE:返回最后一次變化前s的值 s’EVENT 和 s’STABLE可以被綜合,其它仿真用。,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),36,§3.6并行語(yǔ)句,并行語(yǔ)句位于process外面,同時(shí)執(zhí)行,不分位置的先后順序并行語(yǔ)句包括:布爾等式: <=with-selec
39、t-whenwhen-else,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),37,with-select-when語(yǔ)句 with Sel_signal select Signal_name <= a when Sel_signal_1, b when Sel_signal_2, c when
40、 Sel_signal_3,… x when Sel_signal_x;,Signal s : std_logic_vector(1 downto 0);Signal a,b,c,d,x : std_logic;with s select x <= a when “00”, b when “01”,
41、c when “10”, d when others;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),38,when-else語(yǔ)句 Signal_name <= a when condition1 else b when condition2 else c when condition3
42、 else … x ;,x <= a when s=“00” else b when s=“01” else c when s=“10” else d;,Signal a,b,c,d:std_logic;Signal w,x,y,z:std_logic;x <= w when a=‘1’ else
43、 x when b=‘1’ else y when c=‘1’ else z when d=‘1’ else ‘0’;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),39,實(shí)現(xiàn)優(yōu)先級(jí)編碼器 encode <= “111” when D(7) = ‘1’ else “110” when D(6) = ‘1’ else
44、 “101” when D(5) = ‘1’ else “100” when D(4) = ‘1’ else “011” when D(3) = ‘1’ else “010” when D(2) = ‘1’ else “0
45、01” when D(1) = ‘1’ else “000” when D(0) = ‘1’ else “000”;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),40,when-else語(yǔ)句條件語(yǔ)句可以是一個(gè)簡(jiǎn)單的表達(dá)式with-select-when則不能采用表達(dá)式作為條件 a <= “0000” when state=idle and st
46、ate=‘1’ else “0001” when state=idle and state=‘0’ else b when state=running and state=‘1’ else a;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),41,§3.7順序語(yǔ)句,Process,F(xiàn)unction,Procedure中的語(yǔ)句都是順序執(zhí)行。Process與Process之間
47、,與其他并行語(yǔ)句之間都是并行的關(guān)系if-then-elsecase-when,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),42,if-then-else if (condition1) then do something ; elsif (condition2) then … else do something different ; end if;,,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),43,用于作地址譯碼
48、 InRam = X “0000” and addr = X “4000” and addr = X “4008” and addr = X “8000” and addr = X “C000” then EEPRom <= ‘1’; end if;,B:2進(jìn)制 O:8進(jìn)制 X:16進(jìn)制,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),44,case-when case sel_signal is
49、 when value_1 => (do sth) when value_2 => (do sth) … when value_last => (do sth) end case;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),45,實(shí)現(xiàn)數(shù)碼管譯碼器Process
50、(address) begin case address is when “0000” => decode decode decode decode decode <= X “00”; end case; end process;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),46,幾種語(yǔ)句的比較,2024/3/17,
51、邏輯設(shè)計(jì)基礎(chǔ),47,§3.8包與庫(kù),語(yǔ)法: package 包名稱(chēng) is 包說(shuō)明語(yǔ)句 end [package] [包名稱(chēng)]; package body 包名稱(chēng) is 包主體說(shuō)明語(yǔ)句 end [package body][包名稱(chēng)],包說(shuō)明:包含信號(hào)定義、常數(shù)定義、數(shù)據(jù)類(lèi)型、 元件語(yǔ)句、函數(shù)定義和過(guò)程定義等。包主體:component描述、函數(shù)和過(guò)
52、程體。,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),48,經(jīng)常使用的代碼可以采取component、function或者procedure等形式放到package中,然后被編譯到目標(biāo)庫(kù)中。,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),49,Figure 10-1: Gate Circuit,§3.9-VHDL程序示例,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),50,Figure 10-2: Inverter with Feedback,2024/3/
53、17,邏輯設(shè)計(jì)基礎(chǔ),51,Figure 10-3: Three Gates with a Common Input and Different Delays,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),52,Figure 10-4: Array of AND Gates,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),53,Figure 10-5: 2-to-1 Multiplexer,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),54,Figure 10-6:
54、Cascaded 2-to-1 MUXes,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),55,Figure 10-7: 4-to-1 Multiplexer,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),56,Figure 10-8: VHDL Module with Two Gates,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),57,Figure 10-10,-- filename: FullAdder.vhdlibrary ieee;use ieee.s
55、td_logic_1164.all;------------------------------------------------------------entity FullAdder isport (X,Y,Cin: in bit; --InputsCout, Sum: out bit);--Outputsend FullAdder;architecture Equations of FullAdd
56、er isbegin-- concurrent assignment statementsSum <= X xor Y xor Cin after 10 ns; Cout <= (X and Y) or (X and Cin) or (Y and Cin) after 10 ns;end Equations ;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),58,Figure 10-11: 4-Bit Binary
57、 Adder,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),59,Figure 10-12: Structural Description of a 4-Bit Adder,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),60,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),61,Figure 10-13: VHDL Description of a ROM,1entity ROM9_17 is2port (A, B, C: in bit; F: out bit
58、_vector(0 to 3));3end entity; 4architecture ROM of ROM9_17 is5type ROM8X4 is array (0 to 7) of bit_vector(0 to 3);6constant ROM1: ROM8X4 := ("1010", "1010", "0111","0101&quo
59、t;, "1100", "0001", "1111", "0101");7signal index: Integer range 0 to 7;8begin9Index <= vec2int(A&B&C); -- A&B&C Is a 3-bit vector10-- vec2int is a
60、function that converts this vector to an integer11F <= ROM1 (index);12-- this statement reads the output from the ROM13end ROM;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),62,Figure 10-14: Comparator for Integers,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ)
61、,63,Figure 10-15: NOR-NOR Circuit and Structural VHDL Code Using Library Components,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),64,Figure 10-16: Tri-State Buffer,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),65,Figure 10-17: Tri-State Buffers Driving a Bus,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ)
62、,66,Figure 10-18: Resolution Function for Two Signals,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),67,Figure 10-19: VHDL Code for Binary Adder,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),68,Figure 10-20: VHDL Code for Bi-Directional I/O Pin,entity IC_pin isport(IO_pin:
63、inout std_logic);end entity;architecture bi_dir of IC_pin iscomponent ICport(input: in std_logic; output: out std_logic);end component;signal input, output, en: std_logic;begin -- connections to bi-
64、directional I/O pinIO_pin <= output when en = '1' else 'Z';input <= IO_pin;IC1: IC port map (input, output);end bi_dir;,2024/3/17,邏輯設(shè)計(jì)基礎(chǔ),69, 建立一目錄modelsimStudy。用任何文本編輯器編輯一個(gè)簡(jiǎn)單 的例子程序,例如coun
65、ter.vhd。 打開(kāi)Modelsim,首先create project,工程名隨意取,目錄設(shè) 在modelsimStudy下,默認(rèn)的庫(kù)work不變(這樣就不用管什么 建立庫(kù)之類(lèi)的東西了)。然后add existing file,把文件加入 當(dāng)前工程。 編譯此文件,通過(guò)之后,work下面會(huì)出現(xiàn)counter這個(gè)實(shí)體。 然后選中它,右鍵,simulate(左鍵雙擊也可)。 選擇view下面的 obje
66、cts 和 wave窗口就行了。wave窗口剛打開(kāi) 時(shí)是空的,需要在objects窗口的 add -> wave -> signals in region。這時(shí),wave窗口就有counter的相關(guān)信號(hào)。 給counter的clk輸入激勵(lì),在object窗口中選中clk,右鍵選 clock,給它定義個(gè)時(shí)鐘。運(yùn)行Run,看波形。,§3.10-VHDL的ModelSim仿真,2024/3/1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電路和邏輯設(shè)計(jì)基礎(chǔ)含答案
- WebEDU項(xiàng)目邏輯設(shè)計(jì).rtf
- 邏輯設(shè)計(jì)期中考
- 數(shù)字邏輯設(shè)計(jì)及應(yīng)用
- WebEDU項(xiàng)目邏輯設(shè)計(jì).rtf
- FinFET混合邏輯設(shè)計(jì).pdf
- fsss邏輯設(shè)計(jì)說(shuō)明
- 數(shù)字電路與邏輯設(shè)計(jì)試題
- 數(shù)字電路與邏輯設(shè)計(jì)習(xí)題
- 數(shù)字邏輯設(shè)計(jì)與應(yīng)用小論文
- 數(shù)字電路與邏輯設(shè)計(jì)試卷
- 數(shù)字電路與邏輯設(shè)計(jì)考試大綱
- 第四講 邏輯設(shè)計(jì)技術(shù)(1)
- MDIO接口邏輯設(shè)計(jì)及其FPGA驗(yàn)證.pdf
- 數(shù)字電路與邏輯設(shè)計(jì)試卷-(1)
- 數(shù)字邏輯設(shè)計(jì)及應(yīng)用復(fù)習(xí)題
- 邏輯設(shè)計(jì)與數(shù)字系統(tǒng)b教學(xué)大綱
- FPGA的時(shí)序邏輯設(shè)計(jì)及系統(tǒng)優(yōu)化.pdf
- 數(shù)字電路與邏輯設(shè)計(jì)電子教案(3)
- 數(shù)字電路與邏輯設(shè)計(jì)試卷有答案
評(píng)論
0/150
提交評(píng)論