【正文】
CQI,而直接用輸出端口信號完成加法運算,即:CQ = CQ + 1?為什么?5.實驗報告將實驗原理、設(shè)計過程、編譯仿真波形和分析結(jié)果、硬件測試實驗結(jié)果寫進(jìn)實驗報告。實驗五 8位數(shù)碼掃描顯示電路設(shè)計1.實驗?zāi)康膶W(xué)習(xí)硬件掃描顯示電路的設(shè)計。2.實驗原理圖51所示的是8位數(shù)碼掃描顯示電路,其中每個數(shù)碼管的8個段:h、g、f、e、d、c、b、a(h是小數(shù)點)都分別連在一起,8個數(shù)碼管分別由8個選通信號kk…k8來選擇。被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。如在某一時刻,k3為高電平,其余選通信號為低電平,這時僅k3對應(yīng)的數(shù)碼管顯示來自段信號端的數(shù)據(jù),而其它7個數(shù)碼管呈現(xiàn)關(guān)閉狀態(tài)。根據(jù)這種電路狀況,如果希望在8個數(shù)碼管顯示希望的數(shù)據(jù),就必須使得8個選通信號kk…k8分別被單獨選通,并在此同時,在段信號輸入口加上希望在該對應(yīng)數(shù)碼管上顯示的數(shù)據(jù),于是隨著選通信號的掃變,就能實現(xiàn)掃描顯示的目的。例51是掃描顯示的示例程序,其中clk是掃描時鐘;SG為7段控制信號,由高位至低位分別接g、f、e、d、c、b、a 7個段;BT是位選控制信號,接圖51中的8個選通信號:kk…k8 。程序中CNT8是一個3位計數(shù)器,作掃描計數(shù)信號,由進(jìn)程P2生成;進(jìn)程P3是7段譯碼查表輸出程序,與例51相同;進(jìn)程P1是對8個數(shù)碼管選通的掃描程序,例如當(dāng)CNT8等于001 時,K2對應(yīng)的數(shù)碼管被選通,同時,A被賦值3,再由進(jìn)程P3譯碼輸出1001111,顯示在數(shù)碼管上即為“3”;當(dāng)CNT8掃變時,將能在8個數(shù)碼管上顯示數(shù)據(jù):13579BDF 。圖51 8位數(shù)碼掃描顯示電路【例51】LIBRARY IEEE。USE 。USE 。ENTITY SCAN_LED IS PORT ( CLK : IN STD_LOGIC。 SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)。 段控制信號輸出 BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) )。位控制信號輸出 END。ARCHITECTURE one OF SCAN_LED IS SIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0)。 SIGNAL A : INTEGER RANGE 0 TO 15。BEGINP1:PROCESS( CNT8 ) BEGIN CASE CNT8 IS WHEN 000 = BT = 00000001 。 A = 1 。 WHEN 001 = BT = 00000010 。 A = 3 。 WHEN 010 = BT = 00000100 。 A = 5 。 WHEN 011 = BT = 00001000 。 A = 7 。 WHEN 100 = BT = 00010000 。 A = 9 。 WHEN 101 = BT = 00100000 。 A = 11 。 WHEN 110 = BT = 01000000 。 A = 13 。 WHEN 111 = BT = 10000000 。 A = 15 。 WHEN OTHERS = NULL 。 END CASE 。 END PROCESS P1。 P2:PROCESS(CLK) BEGIN IF CLK39。EVENT AND CLK = 39。139。 THEN CNT8 = CNT8 + 1。 END IF。 END PROCESS P2 。 P3:PROCESS( A ) –譯碼電路 BEGIN CASE A IS WHEN 0 = SG = 0111111。 WHEN 1 = SG = 0000110。 WHEN 2 = SG = 1011011。 WHEN 3 = SG = 1001111。 WHEN 4 = SG = 1100110。 WHEN 5 = SG = 1101101。 WHEN 6 = SG = 1111101。 WHEN 7 = SG = 0000111。 WHEN 8 = SG = 1111111。 WHEN 9 = SG = 1101111。 WHEN 10 = SG = 1110111。 WHEN 11 = SG = 1111100。 WHEN 12 = SG = 0111001。 WHEN 13 = SG = 1011110。 WHEN 14 = SG = 1111001。 WHEN 15 = SG = 1110001。 WHEN OTHERS = NULL 。 END CASE 。 END PROCESS P3。 END。3.實驗內(nèi)容(1)說明例51中各語句的含義,以及該例的整體功能。對該例進(jìn)行編輯、編譯、綜合、適配、仿真,給出仿真波形。實驗方式:若考慮小數(shù)點,SG的8個段分別與PIO4PIO4…、PIO42(高位在左)、BT的8個位分別與PIO3PIO3…、PIO41(高位在左);電路模式不限,引腳圖參考附錄圖12。將GW48EDA系統(tǒng)左下方的撥碼開關(guān)全部向上撥,這時實驗系統(tǒng)的8個數(shù)碼管構(gòu)成圖51的電路結(jié)構(gòu),時鐘CLK可選擇clock0,通過跳線選擇16384Hz信號。引腳鎖定后進(jìn)行編譯、下載和硬件測試實驗。將實驗過程和實驗結(jié)果寫進(jìn)實驗報告。(2)修改例51的進(jìn)程P1中的顯示數(shù)據(jù)直接給出的方式,增加8個4位鎖存器,作為顯示數(shù)據(jù)緩沖器,使得所有8個顯示數(shù)據(jù)都必須來自緩沖器。緩沖器中的數(shù)據(jù)可以通過不同方式鎖入,如來自A/D采樣的數(shù)據(jù)、來自分時鎖入的數(shù)據(jù)、來自串行方式輸入的數(shù)據(jù),或來自單片機(jī)等。實驗六 數(shù)控分頻器的設(shè)計1.實驗?zāi)康膶W(xué)習(xí)數(shù)控分頻器的設(shè)計、分析和測試方法。2.實驗原理數(shù)控分頻器的功能就是當(dāng)在輸入端給定不同輸入數(shù)據(jù)時,將對輸入的時鐘信號有不同的分頻比,數(shù)控分頻器就是用計數(shù)值可并行預(yù)置的加法計數(shù)器設(shè)計完成的,方法是將計數(shù)溢出位與預(yù)置數(shù)加載輸入信號相接即可。3.分析根據(jù)圖61的波形提示,分析例61中的各語句功能、設(shè)計原理及邏輯功能,詳述進(jìn)程P_REG和P_DIV的作用,并畫出該程序的RTL電路圖。圖61 當(dāng)給出不同輸入值D時,F(xiàn)OUT輸出不同頻率(CLK周期=50ns)4.仿真輸入不同的CLK頻率和預(yù)置值D,給出如圖61所示的時序波形。5.實驗內(nèi)容(1)在實驗系統(tǒng)上硬件驗證例61的功能??蛇x實驗電路模式1(參考附錄圖3);鍵2/鍵1負(fù)責(zé)輸入8位預(yù)置數(shù)D(PIO7PIO0);CLK由clock0輸入,頻率選65536Hz或更高(確保分頻后落在音頻范圍);輸出FOUT接揚聲器(SPKER)。編譯下載后進(jìn)行硬件測試:改變鍵2/鍵1的輸入值,可聽到不同音調(diào)的聲音。(2)將例61擴(kuò)展成16位分頻器,并提出此項設(shè)計的實用示例,如PWM的設(shè)計等。6.思考題怎樣利用2個由例61給出的模塊設(shè)計一個電路,使其輸出方波的正負(fù)脈寬的寬度分別由兩個8位輸入數(shù)據(jù)控制?7.實驗報告根據(jù)以上的要求,將實驗項目分析設(shè)計,仿真和測試寫入實驗報告。【例61】LIBRARY IEEE。USE 。USE 。ENTITY DVF IS PORT ( CLK : IN STD_LOGIC。 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 FOUT : OUT STD_LOGIC )。END。ARCHITECTURE one OF DVF IS SIGNAL FULL : STD_LOGIC。BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0)。 BEGIN IF CLK39。EVENT AND CLK = 39。139。 THEN IF CNT8 = 11111111 THEN CNT8 := D。 當(dāng)CNT8計數(shù)計滿時,輸入數(shù)據(jù)D被同步預(yù)置給計數(shù)器CNT8 FULL = 39。139。 同時使溢出標(biāo)志信號FULL輸出為高電平 ELSE CNT8 := CNT8 + 1。 否則繼續(xù)作加1計數(shù) FULL = 39。039。 且輸出溢出標(biāo)志信號FULL為低電平 END IF。 END IF。 END PROCESS P_REG 。 P_DIV: PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC。 BEGIN IF FULL39。EVENT AND FULL = 39。139。 THEN CNT2 := NOT CNT2。 如果溢出標(biāo)志信號FULL為高電平,D觸發(fā)器輸出取反 IF CNT2 = 39。139。 THEN FOUT = 39。139。 ELSE FOUT = 39。039。 END IF。 END IF。 END PROCESS P_DIV 。END。實驗七 正弦信號發(fā)生器的設(shè)計1.實驗?zāi)康倪M(jìn)一步熟悉QuartusII及其LPM_ROM與FPGA硬件資源的使用方法。2.實驗原理參考教材相關(guān)內(nèi)容。3.實驗內(nèi)容(1)根據(jù)例71,在Quartus II上完成正弦信號發(fā)生器設(shè)計,包括仿真和資源利用情況了解(假設(shè)利用Cyclone器件)。最后在實驗系統(tǒng)上實測,包括SignalTap II測試、FPGA中ROM的在系統(tǒng)數(shù)據(jù)讀寫測試和利用示波器測試。最后完成EPCS1配置器件的編程?!纠?1】 正弦信號發(fā)生器頂層設(shè)計LIBRARY IEEE。 正弦信號發(fā)生器源文件USE 。USE 。ENTITY SINGT IS PORT ( CLK : IN STD_LOGIC。 信號源時鐘 DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) )。8位波形數(shù)據(jù)輸出END。ARCHITECTURE DACC OF SINGT ISCOMPONENT data_rom 調(diào)用波形數(shù)據(jù)存儲器LPM_ROM文件: PORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0)。6位地址信號 inclock : IN STD_LOGIC 。地址鎖存時鐘q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) )。END COMPONENT。 SIGNAL Q1 : STD_LOGIC_VECTOR (5 DOWNTO 0)。 設(shè)定內(nèi)部節(jié)點作為地址計數(shù)器 BEGINPROCESS(CLK ) LPM_ROM地址發(fā)生器進(jìn)程 BEGINIF CLK39。EVENT AND CLK = 39。139。 THEN Q1=Q1+1。 Q1作為地址發(fā)生器計數(shù)器END IF。END PROCESS。u1 : data_rom PORT MAP(address=Q1, q = DOUT,inclock=CLK)。例化END。信號輸出的D/A使用實驗系統(tǒng)上的DAC0832,注意其轉(zhuǎn)換速率是1μs,其引腳功能簡述如下:ILE:數(shù)據(jù)鎖存允許信號,高電平有效,系統(tǒng)板上已直接連在+5V上;WRWR2:寫信號2,低電平有效;XFER:數(shù)據(jù)傳送控制信號,低電平有效;VREF:基準(zhǔn)電壓,可正可負(fù),-10V~+10V;RFB:反饋電阻端;IOUT1/IOUT2:電流輸出端。D/A轉(zhuǎn)換量是以電流形式輸出的,所以必須將電流信號變?yōu)殡妷盒盘?;AGND/DGND:模擬地與數(shù)字地。在高速情況下,此二地的連接線必須盡可能短,且系統(tǒng)的單點接地點須接在此連線的某一點上。,由附錄對應(yīng)的電路圖可見,DAC0832的8位數(shù)據(jù)口D[7..0]分別與FPGA的PIO330..、24相連,如果目標(biāo)器件是EP1C3T144,則對應(yīng)的引腳是:7770、666551;時鐘CLK接系統(tǒng)的clock0,對應(yīng)的引腳是93,選擇的時鐘頻率不能太高(轉(zhuǎn)換速率1μs,)。還應(yīng)該注意,DAC0832電路須接有+/-12V電壓:GW48系統(tǒng)的+/12V電源開關(guān)在系統(tǒng)左側(cè)上方。;波形輸出在系統(tǒng)左下角,將示波器的地與GW48系統(tǒng)的地