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

正文內(nèi)容

大學(xué)基于fpga的數(shù)字鐘設(shè)計(jì)(vhdl語言實(shí)現(xiàn))(編輯修改稿)

2025-01-12 01:02 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 體振蕩器電路 1HZ 12 圖 32 總體框架 數(shù)字鐘的工作原理 振蕩器產(chǎn)生穩(wěn)定的高頻脈沖信號(hào),作為數(shù)字鐘的時(shí)間基準(zhǔn),然后經(jīng)過分頻器輸出標(biāo)準(zhǔn)秒脈沖。秒計(jì)數(shù)器滿 60后向分計(jì)數(shù)器進(jìn)位,分計(jì)數(shù)器滿 60后向小時(shí)計(jì)數(shù)器進(jìn)位,小時(shí)計(jì)數(shù)器按照“ 24翻 1”規(guī)律計(jì)數(shù)。 計(jì)滿后 各計(jì)數(shù)器清零 , 重新計(jì)數(shù)。 日期部分由于日有 28天、 29天、 30天、 31天 4種情況,故日由年和月共同判斷其天數(shù),日 計(jì)滿后向月進(jìn)位,月滿后向年進(jìn)位。 計(jì)數(shù)器的輸出分別經(jīng)譯碼器送 數(shù)碼管 顯示。計(jì)時(shí)出現(xiàn)誤差時(shí),可以用校時(shí)電路校時(shí)、校分 、校秒和校年、校月和校日 。 在控制信號(hào)中除了一般的校時(shí)信號(hào)外,還有時(shí)鐘使能信號(hào)、時(shí)鐘清零信號(hào)??刂菩盘?hào)由 44矩形鍵盤輸入 。 時(shí)基電路可以由石英晶體振蕩電路構(gòu)成,如果晶振頻率為 1MHz,經(jīng)過 6次十分頻就可以得到秒脈沖信號(hào)。譯碼顯示 13 電路由七段譯碼器完成,顯示由數(shù)碼管構(gòu)成。 14 4 單元電路設(shè)計(jì) 分頻模塊電路 設(shè)計(jì)與實(shí)現(xiàn) 晶體振蕩器是構(gòu)成數(shù) 字式時(shí)鐘的核心, 振蕩器的穩(wěn)定度及頻率的精度決定了數(shù)字鐘計(jì)時(shí)的準(zhǔn)確程度, 它保證了時(shí)鐘的走時(shí)準(zhǔn)確及穩(wěn)定。 石英晶體的選頻特性非常好,只有某一頻率點(diǎn)的信號(hào)可以通過它 ,其它頻率段的信號(hào)均會(huì)被它所衰減 , 而且 , 振蕩信號(hào)的頻率與振蕩電路中的 R、 C元件的數(shù)值無關(guān)。因此 , 這種振蕩電路輸出的是準(zhǔn)確度極高的信號(hào)。然后再利用分頻電路 , 將其輸出信號(hào)轉(zhuǎn)變?yōu)槊胄盘?hào),其組成框圖如圖 41。 圖 41 秒信號(hào)產(chǎn)生電路框圖 本系統(tǒng)使用的 晶體振蕩器電路給數(shù)字鐘提供一個(gè)頻率穩(wěn)定準(zhǔn)確的40MHz 的方波信號(hào), 其輸出至分頻電路。分頻電路的邏輯框 圖 如圖 42所示 。 圖 42 分頻電路模塊 分頻電路 石英晶體 振蕩電路 秒信號(hào) 15 圖 43 分頻模塊 電路 設(shè)計(jì) 其 內(nèi)部結(jié)構(gòu)圖見圖 43。電路中采用 Max+plusII 元器件庫(kù)中的計(jì)數(shù)器7490 進(jìn)行 硬件 分頻。 經(jīng)分頻后輸出 1HZ 的標(biāo)準(zhǔn)秒信號(hào) CLK 4MHZ 的按鍵掃描信號(hào)、 1KHZ 的按鍵去抖信號(hào)和 500HZ 用于報(bào)時(shí)模塊的輸入信號(hào)。 該模塊的時(shí)序仿真圖如圖 44 所示,滿足設(shè)計(jì)要求。 圖 44 分頻模塊仿真圖 校時(shí)控制模塊 電路 設(shè)計(jì)與實(shí)現(xiàn) 鍵盤接口電路原理 校時(shí)控制模塊在本系統(tǒng)中也就是鍵盤接口電路部分。下面先介紹鍵盤接 口電路的 工作 原理 ,如圖 45。 本系統(tǒng)采用的就是這種行列式鍵盤 接口,相對(duì)個(gè)按鍵的鍵盤接口來說節(jié)省了 I/O 接口。如圖所示,行線通 16 過一個(gè)電阻被上拉到 +5V 電壓。行線與按鍵的一個(gè)引腳相連,列線與按鍵的另一個(gè)引腳相連。平時(shí)列線被置成低電平,沒有按鍵被按下的時(shí)候,行線保持高電平,而有按鍵被按下的時(shí)候,行線被拉成低電平,這時(shí)候控制器就知道有按鍵被按下,但只能判斷出在哪一行,不能判斷出在哪一列,因此接下來就要進(jìn)行鍵盤掃描,以確定具體是哪個(gè)按鍵被按下。鍵盤掃描的過程事將列線逐列置成低電平,然后讀取行線狀態(tài),直到行 線中出 現(xiàn)低電平,可知這時(shí)哪一列是低電平,然后將行線與列線的狀態(tài)裝入鍵碼寄存器,進(jìn)行按鍵譯碼,得到按下的按鍵的相應(yīng)編碼,這樣就完成了按鍵掃描的過程。當(dāng)然,一個(gè)完整的按鍵掃描過程還需要配合相應(yīng)的鍵盤去抖手段才能正確的識(shí)別按鍵,不會(huì)發(fā)生重鍵和錯(cuò)誤判斷等情況。 圖 45 鍵盤接口電路 鍵盤接口的 VHDL 描述 本模塊用于當(dāng)有按鍵按下時(shí),采用軟件消抖的辦法去除按鍵抖動(dòng)。模塊的實(shí)現(xiàn)方法是先判斷是否有按鍵按下, 如有按鍵按下則延時(shí)一段時(shí)間,待抖動(dòng)過去之后再讀行線狀態(tài),如果仍有低電平行線,則確定有按 17 鍵按下,然后產(chǎn)生一個(gè)有按鍵按下的信號(hào)。該模塊有一個(gè)時(shí)鐘輸入端口,輸入時(shí)鐘信號(hào)是分頻出來的 1KHZ的時(shí)鐘;有一個(gè)輸入端口與行線相連,用于輸入行線狀態(tài);一個(gè)輸出端口,用于輸出有按鍵按下的信號(hào)。該模塊的邏輯框圖如圖 46 所示。 圖 46 去抖邏輯框圖 該電路的 VHDL 程序如下: library ieee。 use 。 use 。 use 。 entity qudou is port(clk1:in std_logic。 row:in std_logic_vector(3 downto 0)。 key_pre:out std_logic)。 end qudou。 architecture behav of qudou is signal sig1,counter:std_logic_vector(3 downto 0)。 signal tmp1,sig2:std_logic。 begin sig1=row。 tmp1=sig1(0)and sig1(1)and sig1(2)and sig1(3)。 key_pre=counter(0)and counter(1)and counter(2)and counter(3)。 process(clk1) begin if(clk139。event and clk1=39。139。)then if(tmp1=39。039。)then if(sig2=39。039。)then 18 sig2=39。139。 end if。 end if。 if(sig2=39。139。)then if(counter=1111)then sig2=39。039。 counter=0000。 else counter=counter+39。139。 end if。 end if。 end if。 end process。 end behav。 程序說明: 這段程序是實(shí)現(xiàn)按鍵消抖,在這里實(shí)現(xiàn)的比較簡(jiǎn)單,原理是當(dāng)有按鍵按下的時(shí)候, temp1 會(huì)變成低電平,這時(shí)把 sig2 變成高電平,如果此時(shí) counter 不為“ 1111”時(shí),內(nèi)部計(jì)數(shù)器計(jì)數(shù), 從“ 0000”直到“ 1111”,當(dāng)計(jì)數(shù)到“ 1111”時(shí), key_pre 輸出高電平,同時(shí)計(jì)數(shù)器清零。 由于計(jì)數(shù)脈沖為 1KHZ,故從有按鍵按下到輸入信號(hào)產(chǎn)生大概需要 15ms。 如果有按鍵抖動(dòng)的話, tem1 會(huì)在“ 0”和“ 1”之間變動(dòng)多次,但是計(jì)數(shù)過程不會(huì)停止,原因是計(jì)數(shù)由 sig2 的電平?jīng)Q定,而 sig2 一旦變成高電平,再要變成低電平,需要計(jì)數(shù)完成即 counter 等于“ 1111”時(shí)。所以計(jì)數(shù)過程不會(huì)受抖動(dòng)影響。一旦計(jì)數(shù)完成,抖動(dòng)已經(jīng)過去,不會(huì)發(fā)生重鍵現(xiàn)象了,這樣就去除了抖動(dòng)。 鍵掃描模塊的框圖如圖 47 所示 。 19 圖 47 按鍵掃描模塊 CLKY 為輸入時(shí)鐘,該時(shí)鐘是分頻模塊分出的 4MHZ 的時(shí)鐘信號(hào),之所以在這里采用頻率高的時(shí)鐘信號(hào)就是因?yàn)殒I掃描是一個(gè)快過程,不需要太慢的時(shí)鐘。 Key_pre 是由去抖模塊輸出的有鍵按下的信號(hào),這個(gè)信號(hào)引發(fā)按鍵掃描模塊內(nèi)部信號(hào)的變化,在該狀態(tài)信號(hào)的作用下,模塊可以鍵盤掃描。 ROW[3..0]是行輸入信號(hào),與鍵盤的行線相連, COM[3..0]是列輸出信號(hào),與鍵盤的列線相連。 SCAN_CODE[7..0]是掃描的鍵碼輸出端口。 鍵掃描的基本方法是將列線逐一置成低電平,然后讀行 線輸入端口,如果 行線中有低電平出現(xiàn),說明按鍵已經(jīng)確定,將行向量和列向量讀入鍵碼中即可。鍵盤掃描程序如下: library ieee。 use 。 use 。 use 。 entity ajsm is port(clky,key_pre:in std_logic。 row:in std_logic_vector(3 downto 0)。 :out std_logic_vector(3 downto 0)。 scan_code:out std_logic_vector(7 downto 0))。 end ajsm。 architecture behav of ajsm is signal sig_:std_logic_vector(3 downto 0)。 signal counter:std_logic_vector(1 downto 0)。 signal tmp,sig1,sig2:std_logic。 20 begin sig2=key_pre。 tmp=row(0) and row(1) and row(2) and row(3)。 process(clky) begin if(clky39。event and clky=39。139。)then 計(jì)數(shù)進(jìn)程 if(sig2=39。139。)then if(counter=11)then sig1=39。039。 counter=00。 else sig1=39。139。 counter=counter+39。139。 end if。 else sig1=’0’。 counter=”00”。 end if。 end if。 end process。 process(clky) 列線逐位輸出低電平 variable jt :std_logic。 begin if(clky39。event and clky=39。139。)then if(sig1=39。139。)then jt:=sig_(3)。 for i in 3 downto 1 loop sig_(i)=sig_(i1)。 end loop。 sig_(0)=jt。 else sig_=1110。 21 end if。 end if。 end process。 process(clky) begin if(clky39。event and clky=39。139。)then if(sig1=39。139。)then =sig_。 else =0000。 end if。 end if。 end process。 process(clky) 鍵碼信號(hào)賦值 begin if(clky39。event and clky=39。139。)then if(sig1=39。139。)then if(tmp=39。039。)then scan_code=row amp。 sig_。 else scan_code=11111111。 end if。 else scan_code=11111111。 end if。 end if。 end process。 end behav。 程序說明: 該程序較長(zhǎng),用個(gè) 4 個(gè)進(jìn)程,這里逐一介紹。 第一個(gè)進(jìn)程是計(jì)數(shù)變量 counter 的計(jì)數(shù)進(jìn)程 ,當(dāng) sig2 為 1 且 counter不為 11 時(shí), sig1 為 1 且 counter 開始記數(shù)。 22 第二個(gè)進(jìn)程是根據(jù) 狀態(tài)變量的狀態(tài)進(jìn)行列線的低電平的逐位輸出。如果 sig1 等于 1,那么 sig_ 就進(jìn)行循環(huán)移位,每個(gè)鐘周期循環(huán)左移一位。 第三個(gè)進(jìn)程決定列線的輸出,平時(shí)輸出“ 0000”,當(dāng) sig1 為 1 時(shí),輸出 sig_。 最后一個(gè)進(jìn)程就是給鍵碼信號(hào)賦值的過程。 該模塊框圖如圖 48 所示。模塊主要完成從鍵掃描 碼到按鍵編碼的轉(zhuǎn)換。 圖 48 鍵碼轉(zhuǎn)換模塊邏輯框圖 鍵碼轉(zhuǎn)換 的核心 程序如下: entity jmzh is port(clky:in std_logic。 scan_code:in std_logic_vector(7 downto 0)。 key_code:out std_logic_vector(3 downto 0))。 end jmzh。 architecture behav of jmzh is begin process(clky) begin if(clky39。event and clky=39。139。)then case scan_code is when 11101110=key_code=0000。 when 11101101=key_code=0001。 when 11101011=key_code=0010。 when 11100
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1