【正文】
139。 THEN IF LL = 481 THEN LL = 000000000。 THEN IF CC = 29 THEN CC = 00000。 END IF。 產(chǎn)生棋盤格 ELSE GRBP = 000。 THEN IF MMD = 10 THEN MMD = 00。 Y豎彩條 SIGNAL GRBP : STD_LOGIC_VECTOR(3 DOWNTO 1)。 行場(chǎng)同步/紅,綠,蘭END COLOR。(3)設(shè)計(jì)可顯示英語(yǔ)字母的VGA信號(hào)發(fā)生器電路。(5)用嵌入式邏輯分析儀觀察細(xì)分控制/普通控制方式驅(qū)動(dòng)信號(hào)的實(shí)時(shí)波形(圖11113),并給予分析解釋。3.實(shí)驗(yàn)內(nèi)容(1)完成圖111所示的步進(jìn)電機(jī)控制電路的驗(yàn)證性實(shí)驗(yàn)。134: 5。126: 6。118: 8。110: 6 。102:12 。 94: 5。 86: 7。 78: 5。 70: 9 。 62: 5 。 54: 6。 46: 9。 38: 6。 30: 9 。 22:10 。 14: 5。 06: 5。ADDRESS_RADIX = DEC 。139。ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSIC 音符數(shù)據(jù)ROM PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0)。 END PROCESS。1668。 CODE=0101。139。 WHEN 1000 = Tone=10110000010 。 HIGH =39。1036。 CODE=0010。 HIGH =39。USE 。139。 DelaySpkS : PROCESS(FullSpkS)將輸出再2分頻,展寬脈沖,使揚(yáng)聲器有足夠功率發(fā)音 VARIABLE Count2 : STD_LOGIC。 FullSpkS = 39。 THEN Count4 := Count4 + 1。 BEGIN PreCLK = 39。USE 。 END COMPONENT。 COMPONENT ToneTaba PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) 。 音調(diào)頻率信號(hào) CLK8HZ : IN STD_LOGIC。操作步驟如下:a.根據(jù)所填樂(lè)曲可能出現(xiàn)的音符,修改例103的音符數(shù)據(jù)表格,同時(shí)注意每一音符的節(jié)拍長(zhǎng)短;b.如果樂(lè)曲比較長(zhǎng),可增加模塊NOTETABA中計(jì)數(shù)器的位數(shù),如9位時(shí)可達(dá)512個(gè)基本節(jié)拍。注意該例數(shù)據(jù)表中的數(shù)據(jù)位寬、深度和數(shù)據(jù)的表達(dá)類型。這13個(gè)值的輸出由對(duì)應(yīng)于TONETABA 的4位輸入值Index[3..0]確定,而Index[3..0] 最多有16種可選值。圖101中,模塊U1類似于彈琴的人的手指;U2類似于琴鍵;U3類似于琴弦或音調(diào)發(fā)聲器。試設(shè)計(jì)一個(gè)控制搜索的狀態(tài)機(jī),克服這兩個(gè)缺點(diǎn)。 END IF。139。 計(jì)數(shù)器時(shí)鐘 LM311 : IN STD_LOGIC。方法是將實(shí)驗(yàn)系統(tǒng)最左側(cè)的跳線座“JL10”的“AIN0”和“AIN1”用短路帽短接。3.實(shí)驗(yàn)內(nèi)容(1)例91是圖91中FPGA的一個(gè)簡(jiǎn)單的示例性程序。實(shí)驗(yàn)結(jié)束后注意將撥碼開(kāi)關(guān)撥向默認(rèn):僅“4”向下。最后進(jìn)行引腳鎖定并進(jìn)行測(cè)試,硬件驗(yàn)證例81電路對(duì)ADC0809的控制功能。 由信號(hào)current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG LATCH1: PROCESS (LOCK) 此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入 BEGIN IF LOCK=39。 END CASE 。START=39。039。 IF (EOC=39。 啟動(dòng)采樣 WHEN st2= ALE=39。139。START=39。當(dāng)ADDA=39。 觀察數(shù)據(jù)鎖存時(shí)鐘Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。ENTITY ADCINT IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWNTO 0)。實(shí)驗(yàn)八 VHDL狀態(tài)機(jī)A/D采樣控制電路實(shí)現(xiàn)1.實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)用狀態(tài)機(jī)對(duì)A/D轉(zhuǎn)換器ADC0809的采樣控制電路的實(shí)現(xiàn)?;静襟E如下: 頂層文件設(shè)計(jì)(1)創(chuàng)建工程和編輯設(shè)計(jì)文件 正弦信號(hào)發(fā)生器的結(jié)構(gòu)由3部分組成(圖71):數(shù)據(jù)計(jì)數(shù)器或地址發(fā)生器、數(shù)據(jù)ROM和D/A。例化END。 SIGNAL Q1 : STD_LOGIC_VECTOR (5 DOWNTO 0)。USE 。END。139。 END IF。139。ENTITY DVF IS PORT ( CLK : IN STD_LOGIC。5.實(shí)驗(yàn)內(nèi)容(1)在實(shí)驗(yàn)系統(tǒng)上硬件驗(yàn)證例61的功能。引腳鎖定后進(jìn)行編譯、下載和硬件測(cè)試實(shí)驗(yàn)。 WHEN OTHERS = NULL 。 WHEN 8 = SG = 1111111。 P3:PROCESS( A ) –譯碼電路 BEGIN CASE A IS WHEN 0 = SG = 0111111。 END CASE 。 A = 9 。 A = 1 。USE 。2.實(shí)驗(yàn)原理圖51所示的是8位數(shù)碼掃描顯示電路,其中每個(gè)數(shù)碼管的8個(gè)段:h、g、f、e、d、c、b、a(h是小數(shù)點(diǎn))都分別連在一起,8個(gè)數(shù)碼管分別由8個(gè)選通信號(hào)kk…k8來(lái)選擇。(2)引腳鎖定以及硬件下載測(cè)試。 計(jì)數(shù)大于9,輸出進(jìn)位信號(hào) ELSE COUT = 39。 允許計(jì)數(shù), 檢測(cè)是否小于9 ELSE CQI := (OTHERS =39。039。ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC。 END IF。 END IF。 D : IN STD_LOGIC 。注意圖23中的tmp是4位總線,led是7位總線。 WHEN 1111 = LED7S = 1110001 。 WHEN 0111 = LED7S = 0000111 。 END 。注意,這里沒(méi)有考慮表示小數(shù)點(diǎn)的發(fā)光管,如果要考慮,需要增加段h,例21中的LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)應(yīng)改為…(7 DOWNTO 0) 。若選擇目標(biāo)器件是EP1C3,建議選實(shí)驗(yàn)電路模式5(附錄圖7),用鍵1(PIO0,引腳號(hào)為1)控制s0;用鍵2(PIO1,引腳號(hào)為2)控制s1;aa2和a1分別接clock5(引腳號(hào)為16)、clock0(引腳號(hào)為93)和clock2(引腳號(hào)為17);輸出信號(hào)outy仍接揚(yáng)聲器spker(引腳號(hào)為129)。039。 y : OUT STD_LOGIC)。最后在實(shí)驗(yàn)系統(tǒng)上進(jìn)行硬件測(cè)試,驗(yàn)證本項(xiàng)設(shè)計(jì)的功能。 y : OUT BIT )。END ARCHITECTURE one 。2.實(shí)驗(yàn)原理: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ù)的譯碼顯示,最方便的方法就是利用譯碼程序在FPGA/CPLD中來(lái)實(shí)現(xiàn)。 USE 。 WHEN 0100 = LED7S = 1100110 。 WHEN 1100 = LED7S = 0111001 。(2)引腳鎖定及硬件測(cè)試?!纠?1】LIBRARY IEEE 。EVENT AND CLK = 39。【例32】...PROCESS (CLK,D) BEGIN IF CLK = 39?!纠?1】LIBRARY IEEE。 BEGIN IF RST = 39。 THEN 檢測(cè)時(shí)鐘上升沿 IF EN = 39。 END IF。END behav。(5)為此項(xiàng)設(shè)計(jì)加入一個(gè)可用于SignalTap II采樣的獨(dú)立的時(shí)鐘輸入端(采用時(shí)鐘選擇clock0=12MHz,計(jì)數(shù)器時(shí)鐘CLK分別選擇256Hz、16384Hz、6MHz),并進(jìn)行實(shí)時(shí)測(cè)試。程序中CNT8是一個(gè)3位計(jì)數(shù)器,作掃描計(jì)數(shù)信號(hào),由進(jìn)程P2生成;進(jìn)程P3是7段譯碼查表輸出程序,與例51相同;進(jìn)程P1是對(duì)8個(gè)數(shù)碼管選通的掃描程序,例如當(dāng)CNT8等于001 時(shí),K2對(duì)應(yīng)的數(shù)碼管被選通,同時(shí),A被賦值3,再由進(jìn)程P3譯碼輸出1001111,顯示在數(shù)碼管上即為“3”;當(dāng)CNT8掃變時(shí),將能在8個(gè)數(shù)碼管上顯示數(shù)據(jù):13579BDF 。ARCHITECTURE one OF SCAN_LED IS SIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0)。 WHEN 011 = BT = 00001000 。 WHEN 111 = BT = 10000000 。 THEN CNT8 = CNT8 + 1。 WHEN 5 = SG = 1101101。 WHEN 13 = SG = 1011110。對(duì)該例進(jìn)行編輯、編譯、綜合、適配、仿真,給出仿真波形。2.實(shí)驗(yàn)原理數(shù)控分頻器的功能就是當(dāng)在輸入端給定不同輸入數(shù)據(jù)時(shí),將對(duì)輸入的時(shí)鐘信號(hào)有不同的分頻比,數(shù)控分頻器就是用計(jì)數(shù)值可并行預(yù)置的加法計(jì)數(shù)器設(shè)計(jì)完成的,方法是將計(jì)數(shù)溢出位與預(yù)置數(shù)加載輸入信號(hào)相接即可?!纠?1】LIBRARY IEEE。BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0)。 否則繼續(xù)作加1計(jì)數(shù) FULL = 39。139。 END IF。最后完成EPCS1配置器件的編程。6位地址信號(hào) inclock : IN STD_LOGIC 。 Q1作為地址發(fā)生器計(jì)數(shù)器END IF。還應(yīng)該注意,DAC0832電路須接有+/-12V電壓:GW48系統(tǒng)的+/12V電源開(kāi)關(guān)在系統(tǒng)左側(cè)上方。(4)仿真; (5)引腳鎖定、下載和硬件測(cè)試 ; (6)使用嵌入式邏輯分析儀進(jìn)行實(shí)時(shí)測(cè)試;圖72 SignalTapII數(shù)據(jù)窗的實(shí)時(shí)信號(hào)(7)對(duì)配置器件EPCS4/EPCS1編程 (8)了解此工程的RTL電路圖圖73 工程singt的RTL電路圖2)修改例71的數(shù)據(jù)ROM文件,設(shè)其數(shù)據(jù)線寬度為8,地址線寬度也為8,初始化數(shù)據(jù)文件使用MIF格式,用C程序產(chǎn)生正弦信號(hào)數(shù)據(jù),最后完成以上相同的實(shí)驗(yàn)。當(dāng)模擬量送至某一輸入端(如IN1或IN2等),由3位地址信號(hào)選擇,而地址信號(hào)由ALE鎖存;EOC是轉(zhuǎn)換情況狀態(tài)信號(hào),當(dāng)啟動(dòng)轉(zhuǎn)換約100μs 后,EOC產(chǎn)生一個(gè)負(fù)脈沖,以示轉(zhuǎn)換結(jié)束;在EOC的上升沿后,若使輸出使能信號(hào)OE為高電平,則控制打開(kāi)三態(tài)緩沖器,把轉(zhuǎn)換好的8位數(shù)據(jù)結(jié)果輸至數(shù)據(jù)總線,至此ADC0809的一次轉(zhuǎn)換結(jié)束。 轉(zhuǎn)換開(kāi)始信號(hào)OE : OUT STD_LOGIC。 SIGNAL LOCK : STD_LOGIC。 LOCK0 = LOCK 。039。OE=39。039。 轉(zhuǎn)換未結(jié)束,繼續(xù)等待 WHEN st3= ALE=39。 next_state = st4。139。) THEN current_state=next_state。 END PROCESS LATCH1 。這樣就能通過(guò)實(shí)驗(yàn)系統(tǒng)左下的AIN1輸入端與電位器相接,并將信號(hào)輸入0809的IN1端)。其工作原理是:當(dāng)被測(cè)模擬信號(hào)電壓vi接于LM311的“+”輸入端時(shí),由FPGA產(chǎn)生自小到大的搜索數(shù)據(jù)加于DAC0832后,LM311的“”端將得到一個(gè)比較電壓vc;當(dāng)vcvi時(shí),LM311的“1”腳輸出高電平’1’, 而當(dāng)vcvi時(shí),LM311輸出低電平。注意,撥碼5向下后,能將FPGA的PIO37腳與LM311的輸出端相接。USE 。ARCHITECTURE DACC OF DAC2ADC IS SIGNAL CQI : STD_LOGIC_VECTOR(7 DOWNTO 0) 。 THEN IF LM311 = 39。 ELSE 00000000 。圖101 硬件樂(lè)曲演奏電路結(jié)構(gòu)(Synplify綜合)與利用微處理器(CPU或MCU)來(lái)實(shí)現(xiàn)樂(lè)曲演奏相比,以純硬件完成樂(lè)曲演奏電路的邏輯要復(fù)雜得多,如果不借助于功