【正文】
。 enb : IN STD_LOGIC。ARCHITECTURE behav OF t10 ISBEGIN PROCESS(clk, clr, enb) VARIABLE cqi : STD_LOGIC_VECTOR(3 DOWNTO 0)。 ELSIF CLK39。139。 END IF。 END PROCESS。ENTITY REG4B IS PORT ( LOAD : IN STD_LOGIC。ARCHITECTURE behav OF REG4B ISBEGIN PROCESS(LOAD, DIN) BEGIN IF LOAD39。 時(shí)鐘到來(lái),鎖存數(shù)據(jù) END IF。USE 。 out1 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 coutt : OUT STD_LOGIC)。 END COMPONENT。 outy : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 DIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。SIGNAL outy1,outy2,outy3,outy4 : STD_LOGIC_VECTOR(3 DOWNTO 0)。 u4 : t10 PORT MAP(clk=cout2, clr=b_rst, enb=a_ena, outy=outy3, cout=cout3)。 u8 : REG4B PORT MAP(LOAD=c_load, DIN=outy3, DOUT=out3)。實(shí)驗(yàn)?zāi)康?熟悉MAX+plusII的使用。實(shí)驗(yàn)要求 畫(huà)出系統(tǒng)的原理框圖,說(shuō)明系統(tǒng)中各主要組成部分的功能。 記錄系統(tǒng)仿真、硬件驗(yàn)證結(jié)果。ENTITY CLKGEN IS PORT(CLK: IN STD_LOGIC。 BEGIN PROCESS(CLK)IS BEGIN IF CLK39。 ELSE CNTER=CNTER+1。 PROCESS(CNTER)IS BEGIN IF CNTER=1029999 THEN NEWCLK=39。 END IF。USE 。 ENA:IN STD_LOGIC。ARCHITECTURE ART OF CNT6 IS SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0)。 ELSIF CLK39。139。 END IF。 PROCESS(CQI)IS BEGIN IF CQI=0000THEN CARRY_OUT=39。 END IF。十進(jìn)制計(jì)數(shù)器()LIBRARY IEEE。 CLR:IN STD_LOGIC。END ENTITY CNT10。THEN CQI=0000。THEN IF ENB=39。139。 END PROCESS。039。END ARCHITECTURE ART。 CLK:IN STD_LOGIC。ARCHITECTURE ART OF TIMES IS COMPONENT CLKGEN IS PORT(CLK:IN STD_LOGIC。 OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 SIGNAL S1,S2,S3,S4,S5:STD_LOGIC。 U3:CNT10 PORT MAP(S2,CLR,ENA,DOUT(11 DOWNTO 8),S3)。END ARCHITECTURE ART。 熟悉GW48EDA實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)使用。而支干道允許通行亮綠燈時(shí),主干道亮紅燈。 根據(jù)選用的軟件編好用于系統(tǒng)仿真的測(cè)試文件。實(shí)驗(yàn)內(nèi)容LIBRARY IEEE。 DOUT5:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。EVENT AND CLK=39。 THEN CNT3B=CNT3B+1。 ELSIF EN05B=39。 END IF。 WHEN010=DOUT5=00000011。 END CASE。USE 。END ENTITY CNT25S。OR SM=39。EVENT AND CLK=39。 THEN CNT5B=CNT5B+1。 END IF。DOUT25B=00110000。DOUT25B=00101000。DOUT25B=00100110。DOUT25B=00100100。DOUT25B=00100010。DOUT25B=00100000。DOUT25B=00011000。DOUT25B=00010110。DOUT25B=00010100。DOUT25B=00010010。DOUT25B=00010000。DOUT25B=00001000。DOUT25B=00000110。 END PROCESS。USE 。ARCHITECTURE ART OF CNT45S IS SIGNAL CNT6B:STD_LOGIC_VECTOR(5 DOWNTO 0)。 ELSIF(CLK39。139。 THEN CNT6B=CNT6BCNT6B1。 PROCESS(CNT6B) IS BEGIN CASE CNT6B IS WHEN000000=DOUT45M=01000101。 WHEN000010=DOUT45M=01000011。 WHEN000100=DOUT45M=01000001。 WHEN000110=DOUT45M=00111001。 WHEN001000=DOUT45M=00110111。 WHEN001010=DOUT45M=00110101。 WHEN001100=DOUT45M=00110011。 WHEN001110=DOUT45M=00110001。 WHEN010000=DOUT45M=00101001。 WHEN010010=DOUT45M=00100111。 WHEN010100=DOUT45M=00100101。 WHEN010110=DOUT45M=00100011。 WHEN011000=DOUT45M=00100001。 WHEN011010=DOUT45M=00011001。 WHEN011100=DOUT45M=00010111。 WHEN011110=DOUT45M=00010101。 WHEN100000=DOUT45M=00010011。 WHEN100010=DOUT45M=00010001。 WHEN100100=DOUT45M=00001001。 WHEN100110=DOUT45M=00000111。 WHEN101000=DOUT45M=00000101。 WHEN101010=DOUT45M=00000011。 WHEN101100=DOUT45M=00000001。 END CASE。USE 。END ENTITY CSKZ。139。 END PROCESS。ENTITY JTDKZ IS PORT(CLK,SM,SB:IN STD_LOGIC。 SIGNAL STATE:STATE_TYPE。EVENT AND CLK=39。 THEN S:=0。 ELSE S:=S+1。MY0=39。BR=39。BG0=39。 THEN IF S=45 THEN STATE=B。039。EN:=39。139。EN:=39。139。 WHEN B=MR=39。MG0=39。BY0=39。 IF S=5 THEN STATE=C。039。EN:=39。139。039。039。139。EN:=39。139。 ELSIF SB=39。039。CLR:=39。 END IF。039。039。039。EN:=39。139。 END CASE。LIBRARY IEEE。 AIN45M,AIN45B,AIN25M,AIN25B,AIN05:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。139。139。139。139。 END PROCESS。USE 。END ENTITY JTKZQ。 COMPONENT CSKZ IS PORT(INA:IN STD_LOGIC。 DOUT45M,DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 END COMPONENT CNT05S。 COMPONENT XSKZ IS PORT(EN45,EN25,EN05M,EN05B:IN STD_LOGIC。 SIGNAL EN1,EN2,EN3,EN4:STD_LOGIC。U3:CSKZ PORT MAP(INA=EN2,OUTA=MY)。U7:CNT05S PORT MAP(CLK=CLK,EN05M=EN2,DOUT5=S05,EN05B=EN4)。交通燈控制器管腳鎖定實(shí)驗(yàn)?zāi)J剑篘O:5設(shè)計(jì)實(shí)體I/O標(biāo)識(shí)I/O來(lái)源/去向信號(hào)名芯片管腳序號(hào)sm鍵1PIO08sb鍵2PIO19clkClock0Clock054Dout1(0)dout1(3)數(shù)碼管1PIO16~PIO1930~33Dout1(4)dout1(7)數(shù)碼管2PIO20~PIO2336~39Dout2(0)dout2(3)數(shù)碼管3PIO24~PIO2744667Dout2(4)dout2(7)數(shù)碼管4PIO28~PIO316670、72Mr發(fā)光二極管1PIO820My0發(fā)光二極管2PIO921Mg0發(fā)光二極管3PIO1022Br發(fā)光二極管4PIO1123By0發(fā)光二極管5PIO1226Bg0發(fā)光二極管6PIO13271位全加器原理圖輸入設(shè)計(jì)向?qū)В阂?、為本?xiàng)設(shè)計(jì)建立文件夾任何一項(xiàng)設(shè)計(jì)都是一項(xiàng)工程(Project),都必須首先為此工程建立一個(gè)放置與此工程相關(guān)的所有文件的文件夾,此文件夾將被EDA軟件默認(rèn)為工作庫(kù)(Work Library)。 二、輸入設(shè)計(jì)項(xiàng)目和存盤(pán)打開(kāi)Mux+plusII,選菜單 File174。如為了設(shè)計(jì)半加器,分別調(diào)入元件andnot、xnor、input和output并連接好。注意,原理圖的文件名可以用設(shè)計(jì)者認(rèn)為合適的任何英文名(VHDL文本存盤(pán)名有特殊要求)。如果要對(duì)其中某一底層文件進(jìn)行單獨(dú)編譯、仿真和測(cè)試,也必須首先將其設(shè)置成Projcet。選擇此項(xiàng)后可以看到圖窗口左上角顯示出所設(shè)文件的路徑。四、選擇目標(biāo)器件并編譯為了獲得與目標(biāo)件對(duì)應(yīng)的、精確的時(shí)序仿真文件,在對(duì)文件編譯前必須選定最后實(shí)現(xiàn)本設(shè)計(jì)項(xiàng)目的目標(biāo)器件,在Max+plusII環(huán)境中主要選Altera公司的FPGA或CPLD。 最后啟動(dòng)編譯器,首先選擇左上角的MAX+plusII選項(xiàng),在其下拉菜單中選擇編譯器項(xiàng)Compiler,此編譯器的功能包括網(wǎng)表文件提取、設(shè)計(jì)文件排錯(cuò)、邏輯綜合、邏輯分配、適配(結(jié)構(gòu)綜合)、時(shí)序仿真文件提取和編程下載文件裝配等。選擇File項(xiàng)及其New,再選New窗中的Waveform Editer..項(xiàng),打開(kāi)波形編輯窗。由于設(shè)計(jì)者有時(shí)只需要觀察其中部分信號(hào)的波形,因此要利用中間的“=”鍵將需要觀察的信號(hào)選到右欄中,然后點(diǎn)擊OK鍵即可。 設(shè)定仿真時(shí)間寬度。利用必要的功能鍵為a和b加上適當(dāng)?shù)碾娖剑员惴抡婧竽軠y(cè)試so和co輸出信號(hào)。運(yùn)行仿真器。首先觀察半加器的時(shí)序波形。包裝元件入庫(kù)。這里假設(shè)根據(jù)實(shí)際需要,要將半加器的4引腳a、b、co和so分別與目標(biāo)器件EPF10K20的第21和20腳相接,操作如下:選擇Assign項(xiàng)及其中的引腳定位Pin\Location\Chip選項(xiàng),在跳出的窗口中的Node Name欄中用鍵盤(pán)輸入半加器的端口名,如a、b等。特別需要注意的是,在鎖定引腳后必須再通過(guò)MAX+plusII的Compiler選項(xiàng),對(duì)文件從新進(jìn)行編譯一次,以便將引腳信息編入下載文件中。此項(xiàng)設(shè)置只在初次裝軟件后第一次編程前進(jìn)行,設(shè)置確定后就不必重復(fù)此設(shè)置了。VHDL文本輸入的設(shè)計(jì)可參考這一流程。 完成全加器原理圖設(shè)計(jì)。鎖定引腳、編譯并編程下載,硬件實(shí)測(cè)此全加器的邏輯功能。 Compiler Netlist Extractor :編譯器網(wǎng)表文件提取器,該功能塊將輸入的原理圖文件或HDL文本文件轉(zhuǎn)化成網(wǎng)表文件并檢查其中可能的錯(cuò)誤。它將邏輯綜合所得的網(wǎng)表文件,即底層邏輯元件的基本連接關(guān)系,在選定的目標(biāo)器件中具體實(shí)現(xiàn)。對(duì)于大的設(shè)計(jì)項(xiàng)目一般先進(jìn)行功能仿真,方法是在Compiler窗口下選擇Processing項(xiàng)中的Functional SNF Extractor功能仿真網(wǎng)表文件提取器