【正文】
END PROCESS P_DIV 。 ELSE FOUT = 39。 如果溢出標志信號FULL為高電平,D觸發(fā)器輸出取反IF CNT2 = 39。BEGINIF FULL39。 且輸出溢出標志信號FULL為低電平END IF。139。EVENT AND CLK = 39。END。 USE 。試驗箱產(chǎn)生的時鐘信號經(jīng)過分頻后形成秒計時信號,作為計數(shù)模塊和交通燈亮滅控制模塊的時鐘信號。四、設計思想程序部共分為五大模塊四秒倒計時二十秒倒計時六十秒倒計時狀態(tài)機設計數(shù)碼管選擇并分配其中有一個問題,計時時鐘和數(shù)碼管選擇不能使用一個時鐘,因為數(shù)碼管選擇需要很高頻率的時鐘,而計時時鐘需要1HZ時鐘,因此在結構體中還有一個進程,用于把CLKS數(shù)碼管選擇時鐘1M分頻后得到CLK,把它用于計時時鐘。三、實驗內(nèi)容及要求一條主干道,一條鄉(xiāng)間公路。在實驗中使用 8 個七段碼管中的任意兩個數(shù)碼管顯示時間。依人們的交通常規(guī),“紅燈停,綠燈行,黃燈提醒”。 熟悉 VHDL 語言編程,了解實際設計中的優(yōu)化方案。這次是我充分認識到在VHDL中狀態(tài)機的重要性,和其不可替代的作用。點擊“Add Hardware”打開硬件添加窗口,在“Hardware type”下拉框中選擇“ByteBlasterMV or ByteBlaster II”,“Port”下拉框中選擇“LPT1”,點擊OK按鈕確認,關閉Hardware Setup窗口,完成硬件設置。,用下載線將計算機并口和試驗箱上的JTAG口接起來,接通電源。如下圖:,進行綜合編譯,如果有錯誤,折回修改。END PROCESS。 WHEN 1000 =SG=01111111。 WHEN 0100 =SG=01100110。 P4:PROCESS(A)七段譯碼BEGIN CASE A IS WHEN 0000 =SG=00111111。A=BW。sel1=39。139。039。sel0=39。 CASE CNT8 IS 個、十、百分別送數(shù)碼管動態(tài)顯示 WHEN 000 = sel2=39。 END IF。 ELSE CNT8=(OTHERS=39。P3:PROCESS( CLK) 數(shù)碼管控制 BEGIN IF CLK39。 ELSE J=J+1。139。039。 BW=J(11 downto 8)。數(shù)碼管選擇 SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0)。計數(shù)器的個,十,百位 SEL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) 位選信號 )。ENTITY XINSHI ISPORT(CLK,ss2,clr:IN STD_LOGIC。END FrDi。 END IF。 THEN t3 := t3+1。 PROCESS(clk) VARIABLE t3 : INTEGER RANGE 0 TO 999。 END IF。 THEN t2 := t2+1。PROCESS(clk) VARIABLE t2 : INTEGER RANGE 0 TO 99。 END IF。 THEN t1 := t1+1。BEGINPROCESS(clk) VARIABLE t1 : INTEGER RANGE 0 TO 10。 END divider。ENTITY divider ISPORT (clk : IN STD_LOGIC。END PROCESS 。139。 END CASE 。 END IF 。 ELSE Q = s2 。 WHEN s1= IF DIN = D(3) THEN Q = s2 。 THEN CASE Q IS WHEN s0= IF DIN = D(4) THEN Q = s1 。 THEN Q = s0 。SIGNAL flag : INTEGER RANGE 0 TO 1 。END SEQUENCECHECK。S1S0S4S3S20110100101DIN是序列輸入口CLK為時鐘輸入口CLR為清零命令輸入口SS為計數(shù)輸出口程序:LIBRARY IEEE 。設計序列檢測器基本思想是采用有限狀態(tài)機設計,先設定5個狀態(tài)S0、SSSS4 ,實現(xiàn)序列11010的檢測,用到狀態(tài)機。 END IF。 WHEN OTHERS=REG=s0。REG=s15。139。 WHEN s12= Q=39。REG=s11。139。 WHEN s8= Q=39。REG=s7。039。 WHEN s4= Q=39。REG=s3。139。 THEN CASE REG IS WHEN s0= Q=39。039。 BEGIN PROCESS(CLK,RST) BEGIN IF RST =39。END COUNT。程序:LIBRARY IEEE。這次的實習使我意識到我的操作能力的不足,在理論上也有很多的缺陷。這一次的實習正如老師所講,沒有多少東西要我們?nèi)ハ?,更多的是要我們?nèi)プ觯枚鄸|西看起來十分簡單,看著電路圖都懂,但沒有親自去操作,就不會懂得理論與實踐是有很大區(qū)別的。這樣完成報時功能。 selout為數(shù)碼管掃描地址,接入數(shù)碼管地址的低三位。setshi為手動置數(shù)端,當setshi低電平時,也會使enshi為高電平。 秒為60進制計數(shù)器,當1Hz的脈沖信號來臨時,開始計數(shù)。end process。 when1010=seg=1000000。 when0110=seg=1111101。 when0010=seg=1011011。 sel=111。 sel=101。 sel=011。 sel=001。 end if。event and clk_smxs=39。beginselout=sel。end saomiao。 fen:in std_logic_vector(7 downto 0)。use 。(saomiao)設計(saomiao)原理 掃描顯示譯碼器是用來顯示時鐘數(shù)值的裝置,將數(shù)字時鐘的高低電平信號用數(shù)碼管的數(shù)值顯示出來。 end if。139。event and clk_10k=39。 clk:out std_logic )。(fenpin)VHDL程序描述library ieee。其他情況時,LED燈均不發(fā)光。 end if。 when others=temp=39。 end case。) then if(numfen=01011001) then case nummiao is when01011001=temp=39。 output=temp。architecture fun of baoshi is signal temp:std_logic。entity baoshi is port( clk:in std_logic。 reset為清零端,當reset低電平時,countfen計數(shù)從零重新開始計數(shù)。 end process。 elsif(count00100011) then count=count+1。139。039。end shi。use 。countfen計數(shù)到59時,下一個enfen(imiao)、clk到來時,enshi高電平,即向時進位,同時countfen清零。 end if。 enshi_1=39。 end if。) then if(count(3 downto 0)=1001) then if(count1660) then if(count=01011001) then count=00000000。) then count=00000000。 enshi_2=((not setshi) and clk)。end fen。use 。reset為清零端,當reset低電平時,countmiao計數(shù)從零重新開始計數(shù)。 end if。 enfen_1=39。 enfen_1=39。139。event and clk=39。) then count=00000000。 enfen_2=((not setfen) and clk)。end miao。use 。這樣可以對所設計的時鐘的時間進行清零處理。二、數(shù)字時鐘設計方案秒顯示時顯示分顯示整點報時數(shù)碼管顯示FPGA芯片時鐘程序使能控制端RESET復位端CLK信號端時鐘計數(shù):完成時、分、秒的正確計時并且顯示所計的數(shù)字;對秒、分60進制計數(shù),即從0到59循環(huán)計數(shù),對時24進制計數(shù),即從0到23循環(huán)計數(shù)。將此設計任務分成若干模塊,規(guī)定每一模塊的功能和各模塊之間的接口,同時加深層次化設計概念;軟件的元件管理深層含義,以及模塊元件之間的連接概念,對于不同目錄下的同一設計,如何熔合;適配劃分前后的仿真內(nèi)容有何不同概念,仿真信號對象有何不同,有更深一步了解。 掌握 VHDL 編寫中的一些小技巧。(2)數(shù)碼管動態(tài)顯示時,要注意選通位的設置。因此實驗硬件測試結果與程序要實現(xiàn)的功能相符合。 (3)rest為清零控制端,當其為高電平時清零。在mode中選中JTAG,將Program/Configure下的笑方框選中4在開始編程之前,必須正確設置編程硬件。六、引腳鎖定在這里我設置了八個用戶開關K0K7用來設置初值R,三個用戶按鍵SSS3,其中S1控制EN,S2控制M,S3控制REST。 WHEN J =MODEL ELSE 39。END CASE。 WHEN 0111 =SG=00000111。 WHEN 0011 =SG=01001111。 END PROCESS 。039。039。sel0=39。 WHEN 001 = sel2=39。139。SEL(2)=sel2 。 END IF。 THEN IF CNT8010 THEN CNT8 =CNT8+1。END PROCESS。)。 ELSE J=J+1。139。 ELSIF CLK139。139。 GW=J(3 downto 0)。23WHEN 39。 END PROCESS。R分頻:R是一個八位的二進制數(shù) ELSE CLK1=39。 THEN CNT=CNT+1。 模長信號BEGINP1:PROCESS(CLK,R) 進程P1分出的頻率用來數(shù)碼管的位 BEGIN X=R。 數(shù)碼管分頻計數(shù) SIGNAL J : STD_LOGIC_VECTOR(11 DOWNTO 0)。計數(shù)器的個,十,百位 COUT:OUT STD_LOGIC。 分頻計數(shù)初值 sel0,sel1,sel2:buffer STD_LOGIC。USE 。我使用了一個可變的R作為分頻計的初值。二、實驗內(nèi)容與要求計設置一位控制模的位M,要求M=0,模23計數(shù);當M=1,模109計數(shù);計數(shù)結果用三位數(shù)碼管顯示,顯示BCD碼;利用Quartus軟件實現(xiàn)波形仿真;應用實驗箱驗證此計數(shù)器的功能。工程名,vhdl文件名一定要與實體名相同等硬件測試方面,要正確添加硬件、正確設置引腳進行引腳鎖定,然后一定不要忘記重新全程編譯一遍,接下來是下載,有時由于接觸不好會下載失敗,我把實驗箱關掉電源,重新插了下連接線,重新打開后,下載成功。八、硬件測試結果硬件測試:根據(jù)真值表,本次實驗中,我的ain bin cin sum取的是LED1和LED2,,如輸入000 ,由于輸出count sum均為低電平,因此LED1和LED2均滅,輸入111由于輸入count sum均為高電平,因此LED1和LED2均亮,依據(jù)全加器真值表依次驗證過后,結果與真值表相符合?;氐骄幊唐饔布O置窗口,點擊 Close按鈕退出設置。在mode中選中JTAG,將Progr