freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于vhdl語言的兩位數(shù)簡易記分板設(shè)計畢業(yè)設(shè)計-在線瀏覽

2024-09-12 08:59本頁面
  

【正文】 [6]。至于別的方面二者的功能都不分伯仲,談不上孰優(yōu)孰劣。 記分板系統(tǒng)的設(shè)計 ( 1) 系統(tǒng)的功能 兩位分?jǐn)?shù) 0099 顯示、加分、 減分。 ( 2) 系統(tǒng)的設(shè)計 EDA 技術(shù)采用的是“自頂向下”( TopDown)的設(shè)計方法,所以,首要任務(wù)就是分析整個系統(tǒng)的結(jié)構(gòu),然后根據(jù)結(jié)構(gòu)的特點將其分成若干個子模塊,然后對這些子模塊進行分析、設(shè)計和驗證,當(dāng)子模塊都設(shè)計成功后,再將一個個小的子模塊聯(lián)合在一起形成一個完整的系統(tǒng)。結(jié)構(gòu)原理圖如圖 21所示: 5 圖 21 系統(tǒng)結(jié)構(gòu)框圖 如圖 21,外部時鐘源由于其頻率太高,不能直接用于 FPGA 內(nèi)部的各功能模塊所以需 要對其進行分頻;按鍵信號由于具有抖動性,所以要對其進行去抖才能將信號送入 FPGA 中的模塊進行使用;譯碼模塊是驅(qū)動數(shù)碼管顯示的模塊。第一節(jié)闡述了分頻器的原理應(yīng)用以及軟件的實現(xiàn);第二節(jié)描述了去抖模塊的原理以及用 VHDL 語言如何去實現(xiàn);第三節(jié)介紹了數(shù)碼管的顯示原理應(yīng)用范圍以及使用軟件的方法來驅(qū)動數(shù)碼管顯示我們需要顯示的內(nèi)容。 ( 2) 程序設(shè)計 首先,打開程序,進入 MAX+Plus II 的開發(fā)環(huán)境,然后點擊 File 菜單出現(xiàn)下拉菜單,如圖 31。 6 圖 31 文件選項下拉菜單 選擇第三項,點擊 OK,就可新建一個文本文件,如圖 33所示。注意:文件名與實體名應(yīng)一致! 圖 32 文 件類型選擇菜單 圖 33 文本編輯界面 7 文件保存成功后,就開始在此界面編輯 VHDL 程序,如圖 34 所示。 use 。 use 。庫的聲明格式為: LIBRARY 庫名 。 庫是存儲和放置可編譯設(shè)計單元的地方,程序包包含的資源主要有:常數(shù)說明、數(shù)據(jù)類型說明、元件語句定義、子程序定義和其他說明。 entity fenpin is generic(n:integer:=1 )。 clkout:out std_logic。 end entity fenpin。 clkin是外部時鐘源的輸入端口, clkout 是分頻后的信號輸出端口, res 是復(fù)位按鍵信號輸入。在本段程序中,修改 n的值即可改變分頻器的分頻數(shù) [8]。039。039。 begin process(clkin1,res) begin if res=39。 then leijia=(others=39。)。039。event and clkin1=39。)then 8 if(leijia=n1) then leijia=(others=39。)。 else leijia=leijia+1。 end if。 end process。 end architecture a。在該部分中,結(jié)構(gòu)體的描述方式為“行為描述”,并且定義了兩個信號,一個是“ leijia”信號,用來對外部時鐘的脈沖進行計數(shù),一個是“ clkq” ,因為輸出信號“ clkout”不能進行運算操作,所以它起到了運算并存儲中間數(shù)據(jù)的作用?!笔蛊錉顟B(tài)反轉(zhuǎn),再將其值賦給 clkout。程序編寫完成后就可以編譯程序 [9]。 圖 34 分頻器程序編輯界面 9 圖 35 工程設(shè)置 然后就可以對寫好的程序進行編譯,點擊 MAX plus II 中的 Compiler 選項,出現(xiàn)編譯窗口,再點擊 OK 就可對程序進行編譯。 圖 36 編譯成功界面 圖 37 編譯失敗界面 10 ( 3) 波形圖文件 波形圖文件的作用是觀察設(shè)計的程序產(chǎn)生的時序圖,讓設(shè)計者直觀地看出設(shè)計的程序是否滿足設(shè)計的要求。 圖 38 波形文件觀察界面 單擊鼠標(biāo)右鍵,選擇倒數(shù)第二項,出現(xiàn)圖 39的窗口,然后點擊“ List”按鈕,左邊窗口出現(xiàn)程序中的全部端口,需要觀 察哪個就選中該端口,在點擊“ =”將其移動到右邊窗口。選中輸入信號 clkin 設(shè)置其時序圖,點擊圖 310中被圈出的那個圖標(biāo),出現(xiàn)時序設(shè)置窗口,設(shè)置完成后單擊 OK[10]。 11 圖 310 波形設(shè)置窗口 如圖 311 所示,選擇 File 菜單中的 Simulator 選項,彈出右邊的編譯窗口,單擊 Start 開始仿真,完成后點擊 Open SCF 選項。觀察生成的時序圖是否與預(yù)期一致。 圖 311 仿真啟動界面 圖 312 仿真時序圖 12 從圖 312 中可以直觀地看出這是一個二分頻的分頻器,每當(dāng) clkin 的上升沿到來時, clkout 的電平都會發(fā)生反轉(zhuǎn),另外,當(dāng)復(fù)位信號 res 有效時, clkout 的電平立即復(fù)位 [11]。 按鍵去抖模塊的設(shè)計 ( 1) 原理 我們經(jīng)常用到的按鍵大都是利用“彈性形變”的原理制作的開關(guān),當(dāng)按下或釋放按鈕時,由于機械 觸點發(fā)生的是彈性形變,它總是阻止觸點的形態(tài)產(chǎn)生變化,從而產(chǎn)生一定的抖動,這個短暫的抖動使得按鈕在吸合時不會瞬時穩(wěn)定地連接,在斷開時同樣不會瞬間地分離,如圖 313 所示。按鈕的抖動會讓 CPU 無法判斷按鈕是否確實按下,從而產(chǎn)生一系列的誤動作。即 CPU 必須在鍵值穩(wěn)定時才讀取其狀態(tài),在抖動時不做任何處理。 有兩種方式來消除按鈕的抖動,即硬件去抖和軟件去抖 。本課題使用的是軟件消抖,即使用 VHDL 語言編寫去抖程序,基本原理如下:事先規(guī)定,按鍵未按下時為高電平 1,按鍵按下時為低電平 0。反之則認(rèn)為是抖動,程序不做任何處理,繼續(xù)掃描按鍵狀態(tài)。 圖 313 按鍵抖 動示意圖 ( 2) 程序設(shè)計 如圖 31 到 35 所示步驟新建一個文本編輯文件,保存后在其中編寫去抖程序,完成后如圖 314 所示。 variable count1:integer range 0 to 1。event and clk_200hz=39。 then if anjian_in=39。 then if count=2 then count:=0。039。 end if。 anjian_out=39。 end if。 end process。變量 count 對脈 沖進行計數(shù)。當(dāng) count 的值達到 2 時,在 clk_200hz 的第三個脈沖上升沿到來時,若鍵值仍為 0,則說明當(dāng)前按鈕按下的時間已過了 10ms,確實有鍵按下,并非抖動,則令去抖模塊的輸出為低電 14 平 ,否則將 count 清零并使輸出為高電平。最后開始仿真,仿真時序圖如圖 315所示。再者,之所以該信號使用的是 2 分頻,目的是為了方便觀察。而第三次按下表示按鍵時長時間按下,在這里,程序設(shè)置的是只做一次按鍵處理,即在 anjian_in 長時間處 于低電平時, anjian_out始終是低電平,不會發(fā)生電平跳變。這樣做的目的是防止程序產(chǎn)生錯誤的判斷從而導(dǎo)致發(fā)出指令出現(xiàn)錯誤。 譯碼顯示模塊 ( 1) 數(shù)碼管的選取 將 多個 發(fā)光二極管 按照 8 字型 拼接在 一起,再在右下角加一個 LED 構(gòu)成 小數(shù)點,這樣就構(gòu)成了我們常用的八段 數(shù)碼管( LED Segment Displays) 。 數(shù)碼管 實際上是由七個發(fā)光管組成 8字形構(gòu)成的,加上小數(shù)點就是 8段, 分別由字母 a,b,c,d,e,f,g,dp來表示 。本設(shè)計中選用的是共陰 8 段 數(shù)碼管, BCD 顯示字符真值表見表 31,根據(jù)真值表就可讓數(shù)碼管顯示 09十個數(shù)字。 when 1 = led1=B0110000。 when 3 = led1=B1111001。 when 5 = led1=B1011011。 when 7 = led1=B1110000。 when 9 = led1=B1111011。 end case。 xianshiled0:process(leda0) begin 16 case leda0 is when 0 = led0=B1111110。 when 2 = led0=B1101101。 when 4 = led0=B0110011。 when 6 = led0=B1011111。 when 8 = led0=B1111111。 when others = led0=B0000000。 end process。信號 leda1 與 leda0 是分?jǐn)?shù)顯示的編碼信號,當(dāng)加分、減分、清零按鍵按下時,這兩個信號的值在 09之間循環(huán)的增加、減少、歸零。 圖 316 數(shù)碼管顯示時序圖 4 系統(tǒng)組態(tài)及調(diào)試 系統(tǒng)組態(tài) 系統(tǒng)綜合模塊圖如圖 所示,左邊是信號輸入引腳,從上到下依次是加分按鍵、減分按鍵、復(fù)位按鍵和清零按鍵;右邊是信號輸出 引腳,從上至下依次是加分和減分按鍵信號觀察引腳、十位數(shù)數(shù)碼管驅(qū)動總線端口、個位數(shù)數(shù)碼管驅(qū)動總線端口、蜂鳴器驅(qū)動端口、按鍵掃描脈沖觀察端口。 17 圖 41 系統(tǒng)綜合模塊圖 頂層程序設(shè)計及調(diào)試 首先,新建一個文本編輯文件,步驟參照圖 到圖 ,然后在其中編寫頂層程序,如圖 所示。所謂元件例化語句就是首先把一 個現(xiàn)成的設(shè)計實體包裝成一個元件,然后在其他設(shè)計實體中調(diào)用該元件連接電路 [16]。 anjian_out:out std_logic。 res:in std_logic )。 18 ponent fenpin is 分頻元件定義 generic(n:integer:=1)。 clkout:out std_logic。 end ponent。 PORT(端口名表 )。 元件定義完成以后,接著就是 在程序中調(diào)用元件。 該元件例化語句是掃描按鍵狀態(tài)的脈沖調(diào)用分頻模塊,產(chǎn)生的脈沖供去抖模塊使用以得出正確的鍵值。 jianfen0: qudou port map (anjian_in=jianfen, anjian_out=jianfen_out, clkin=clkin, res=res )。 這三個元件例化語句是加分、減分、分?jǐn)?shù)清零三個按鍵調(diào)用去抖模塊,為分?jǐn)?shù)顯示提供正確的鍵值。第二種是名字關(guān)聯(lián)方式:確定連接情況后,把元件中的端口名寫在前面,通過連接符號“ =”和外接的端口或信號名連在一起 [17]。 圖 43 頂層程序編譯界面 然后依照圖 到圖 的步驟新建一個波形圖文件,添加需要觀察的端口,設(shè)置好相關(guān)參數(shù)后保存,之后開始仿真。 20 圖 44 系統(tǒng)波形圖 從圖中可以看出,個端口的時序圖基本都符合最初的設(shè)計要求:當(dāng)按一次加分鍵 led0 就從 0 到 9依次變化, led0 每到 9一次 , led1 的值就從 0 到 9依次變化,同時 led0 又從 0 開始變化。當(dāng)減分按鍵按下時,數(shù)碼管的變化與加分按鍵按下時變化相反,直至分?jǐn)?shù)為 0。細(xì)節(jié)圖如圖 所示。這樣就出現(xiàn)一個問題,如果按鍵持續(xù)的時間大于檢測脈沖,那么在這段時間內(nèi)肯定包含多個上升沿,這就導(dǎo)致在這些上升沿到來時分時就會發(fā)生多次變化。因為這樣的話就不能及時的檢測出按鍵的狀態(tài)。很顯然這樣的設(shè)計就是去了實用的價值。如圖 是原
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1