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

正文內(nèi)容

基于單片機(jī)和fpga的位同步信號提取畢業(yè)論文(編輯修改稿)

2025-07-19 01:41 本頁面
 

【文章內(nèi)容簡介】 1用作計(jì)數(shù)器,用來測量輸入信號的頻率。在不執(zhí)行中斷程序時,主程序檢測鍵盤是否按下。如有鍵按下,根據(jù)不同的按鍵,改變當(dāng)前的狀態(tài)利用中斷判斷當(dāng)前狀態(tài),執(zhí)行相應(yīng)的操作,就可以檢測鍵盤和控制其它模塊的工作了。在T0的基礎(chǔ)上,T0中斷程序內(nèi)部使用一個減計(jì)數(shù)器,記錄中斷次數(shù)。通過判斷計(jì)數(shù)器是否為零,決定服務(wù)程序的執(zhí)行。在同步狀態(tài)下,單片機(jī)定時測量輸入信號的頻率,及時進(jìn)行跟蹤、捕捉和同步,實(shí)現(xiàn)控制鎖相環(huán)的目的。 鍵盤模塊的設(shè)計(jì)與實(shí)現(xiàn) 鍵盤的設(shè)計(jì)通常有兩種方法:鍵盤掃描法和鍵盤中斷法。在本設(shè)計(jì)中,采用了另外一種設(shè)計(jì)方法,就是利用FPGA強(qiáng)大的邏輯單元,自己設(shè)計(jì)和調(diào)用所需的芯片。因?yàn)镸UX+PLUS II給FPGA設(shè)計(jì)帶來了很大的靈活性,并有著較強(qiáng)的混合設(shè)計(jì)方式。為實(shí)現(xiàn)不同的功能,它提供了大量的元器件和宏功能符號供設(shè)計(jì)人員使用。 為了實(shí)時掃描鍵盤,必須為鍵盤制定一個和單片機(jī)可雙向傳輸?shù)慕涌冢喊裀0口作為抵制和數(shù)據(jù)的復(fù)用口,P1用于測頻控制,P3口用于中斷和計(jì)數(shù),P2口作為鍵盤的掃描口。: 鍵盤與單片機(jī)連接表鍵盤引腳單片機(jī)引腳單片機(jī)腳號鍵盤引腳單片機(jī)引腳單片機(jī)腳號X125Y121X226Y222X327Y323X428Y424 設(shè)計(jì)中問題和解決方法 在鍵盤的設(shè)計(jì)中,存在一些需要解決的問題。在本節(jié),將會給出這些問題的解決方法。查詢是否有鍵按下,~“0”掃描碼FOH,~,只要有一列信號不為“1”,則表示有鍵按下。查詢按下鍵所在的位置。單片機(jī)將得到的信號去反,~,為1的就是鍵所在的列;要確定鍵所在的行,就需要進(jìn)行逐行掃描。“0”,~“1”,即向P2口發(fā)送掃描碼FEH,接著輸入列檢查信號,若全為“1”,表示不在第一行,其余為“1”,在讀入列信號……這樣逐行發(fā)“0”掃描碼,直到找到按下鍵所在的行,將該掃描碼去反保留。對得到的列號和行號進(jìn)行譯碼,得到鍵值。當(dāng)用手按下一個鍵時,往往會出現(xiàn)所按鍵在閉合位置和斷開位置之間跳動幾下后才穩(wěn)定到閉合狀態(tài)的情況,這就是鍵的抖動。在釋放一個鍵的時候,也會出現(xiàn)類似情況。這樣會引起對鍵的多次讀入。解決方法是當(dāng)單片機(jī)發(fā)現(xiàn)有鍵按下后,就立即停止逐行掃描,經(jīng)過延時(約10ms)后在進(jìn)行。閉合鍵的多次讀入解決辦法??赡茉趯?shí)際操作中,為了防止“一次按鍵,多次掃描”的問題的發(fā)生,應(yīng)作如下處理:a、應(yīng)設(shè)計(jì)存取區(qū)lastkey,以保存上一次的掃描鍵值。b、掃描是否有鍵按下。如沒有,lastkey置零,表示此時鍵已松開或無鍵按下。c、逐行掃描,得到鍵特征值。d、將特征值與lastkey相比,若相等表示鍵松開,則重新掃描;否則,將特征值保存在lastkey中,作為下一次的比較對象。e、根據(jù)得到的特征值,判斷按鍵執(zhí)行相應(yīng)的程序。f、繼續(xù)掃描鍵盤有無鍵按下。 鍵盤設(shè)計(jì)的軟件設(shè)計(jì) 通過對鍵盤模塊進(jìn)行具體描述后,下一步就應(yīng)當(dāng)用軟件編程來實(shí)現(xiàn)單片機(jī)鍵盤掃描的功能,掃描的程序如下(若無鍵按下,則返回值為(0): uchar kbscan(void) { uchar scode,record; P2=0xF0。 if ((P2amp。0xF0)!=0xF0) { dlms()。 if ((P2amp。0xF0)!=0xF0) { scode=0xFE。 while((scodeamp。0x10)!=0 {P2=scode。 if ((P2amp。0xF0)!=0xF0) { record=(P2amp。0xf0)|0xof。 ruturn((~scode)+(~record))。 } else scode=(scode1)|0x10。 } } } return(0)。 } 測頻、輸出顯示模塊的設(shè)計(jì)與實(shí)現(xiàn) 在本節(jié)中,我們將測頻和輸出顯示模塊的設(shè)計(jì)與實(shí)現(xiàn)分開討論。 測頻部分 測頻部分的設(shè)計(jì)和實(shí)現(xiàn)主要分為電路設(shè)計(jì)與軟件編程設(shè)計(jì)。 測頻電路的設(shè)計(jì)實(shí)現(xiàn) 根據(jù)單片機(jī)的原理,定時器/計(jì)數(shù)器在每個機(jī)器周期的S5P2期間采樣Tx腳輸入信號,若一個機(jī)器周期的采樣值為1,下一個機(jī)器周期的采樣值為0,則計(jì)數(shù)器加1。由于識別一個高電平到低點(diǎn)平的跳變需要兩個機(jī)器周期,所以外部計(jì)數(shù)脈沖的頻率應(yīng)小于fosc/24,且高電平與低電平的延續(xù)時間均不得小于一個機(jī)器周期。設(shè)計(jì)使用的單片機(jī),fosc=12MHz,所以測量頻率finfosc/24=500KHz。因此還要加入一個附加電路,起到一個二分頻的作用,這樣測量頻率就可達(dá)到1MHz。: 測頻電路和分頻電路 測頻模塊的軟件設(shè)計(jì)根據(jù)測頻電路的設(shè)計(jì)功能,對其進(jìn)行軟件那編程。首先,P16_ctrr發(fā)一個清零負(fù)脈沖,使UU2兩個D觸發(fā)器復(fù)位,其輸出封鎖與門G1和G2。接著由P17_ctrr發(fā)一個啟動正脈沖,其有效上升沿使U1=1,門G1被開放。而后,被側(cè)脈沖上升通過G2送T1計(jì)數(shù);同時啟動計(jì)時開始,直到定時結(jié)束,從P6_ctrr發(fā)一個負(fù)脈沖,清零U2,封鎖G2,停止T/C1計(jì)數(shù),完成一次頻率采樣過程。測量T/C1定時時間為500ms,T/C0定時為100ms,程序5次中斷后的時間就是5100ms=500ms,中斷次數(shù)的計(jì)數(shù)值在pret中。T/C0定時的計(jì)數(shù)初值:03CB0H。計(jì)數(shù)1采用16位計(jì)數(shù)。設(shè)T/C0為高優(yōu)先級,允許計(jì)數(shù)中斷過程定時中斷,即定時時間到就終止計(jì)數(shù)。 顯示部分為了讓使用者可以直觀的看到被跟蹤信號的頻率,所以在測頻后,加入了顯示模塊。由于顯示電路的數(shù)據(jù)由單片機(jī)提供,并且采用了動態(tài)掃描方式進(jìn)行顯示,所以我們必須為單片機(jī)提供輸出鎖存器。并且在顯示電路的FPGA實(shí)現(xiàn)中,這里通過使用Verilog語言和圖形相結(jié)合的方法來設(shè)計(jì)實(shí)現(xiàn)現(xiàn)實(shí)模塊。在顯示電路中,我使用了MAX+PLUS II軟件中的7448芯片,還根據(jù)實(shí)際需要設(shè)計(jì)掃描和數(shù)據(jù)鎖存口。 7448芯片介紹7448芯片是一塊專用于7段數(shù)碼管的驅(qū)動芯片,因?yàn)槠漭斎霝?421BCD碼,輸出為段顯示碼,所以被廣泛地應(yīng)用在顯示電路中。: 7448芯片模型部分引腳功能如下:滅燈輸入BIN:BIN是特殊控制端,當(dāng)BI=0時,無論其他輸入端是什么電平,所有各段輸出均為0。試燈輸入LTN:當(dāng)LT=0時,無論其他輸入端是什么狀態(tài),所有各段輸出均為1,顯示為“8”。該端口主要用于測試數(shù)碼管的好壞。動態(tài)滅零輸入RBIN:當(dāng)LT=1,RBIN=0且輸入碼DCBA=0000時,各段輸出均為低電平,與BCD碼對應(yīng)的字形熄零。 動態(tài)掃描電路的軟件設(shè)計(jì)根據(jù)動態(tài)掃描電路的功能與原理圖(),下面對掃描顯示的外部電路進(jìn)行設(shè)計(jì)。 所試: 掃描顯示外部電路圖圖中l(wèi)adisplay模塊的輸入引腳分為以下兩部分:數(shù)據(jù)輸入控制部分:主要包括CS(片選)、WR(寫入)、ADD[2..0](內(nèi)部數(shù)據(jù)存儲器地址)、DATA[6..0](數(shù)據(jù)輸入)。掃描控制部分:主要包括clk(時鐘脈沖輸入)、sel[7..0](數(shù)碼管選通)、bcdout[6..0](數(shù)碼管輸出)。根據(jù)本模塊的設(shè)計(jì)原理,需要在顯示部分開辟數(shù)據(jù)存儲區(qū),用來存放需要顯示的數(shù)據(jù)。根據(jù)計(jì)數(shù)器的值,選中所要亮的數(shù)碼管,然后將數(shù)據(jù)送到7448芯片的數(shù)據(jù)輸入端。設(shè)計(jì)程序如下:always@(posedge wr) begin if(!cs) case(add) ’d0:mymem[6:0]=data。 ’d1:mymem[13:7]=data。 ’d2:mymem[20:14]=data。 ’d3:mymem[27:21]=data。 ’d4:mymem[34:28]=data。 ’d5:mymem[41:35]=data。 ’d6:mymem[48:42]=data。 ’d7:mymem[55:49]=data。 end case end always@(posedge clk)begin case(t) ’d0:begin qout=mymem[6:0]。 sel=’b00000001。 end ’d1:begin qout=mymem[13:7]。 sel=’b00000010。 end ’d2:begin qout=mymem[20:14]。 sel=’b00000100。 end ’d3:begin qout=mymem[27:21]。 sel=’b00001000。 end ’d4:begin qout=mymem[34:28]。 sel=’b00010000。 end ’d5:begin qout=mymem[41:35]。 sel=’b00100000。 end ’d6:begin qout=mymem[48:42]。 sel=’b01000000。 end ’d7:begin qout=mymem[55:49]。 sel=’b10000000。 endendcase t=t+1。end鎖相環(huán)的基本結(jié)構(gòu)是由鑒相器、可編程K可逆計(jì)數(shù)器、脈沖加減電路和N分頻器四部分組成。可編程K可逆計(jì)數(shù)器和脈沖加減電路的時鐘分別為Mfc和2Nfc。這里的fc是環(huán)路中心頻率,一般情況下M和N都是2的整數(shù)冪。鑒相器:在數(shù)字電子設(shè)計(jì)中,常用的鑒相器主要有異或門鑒相器(XORPD)和邊沿觸發(fā)式鑒相器(ECPD)。ECPD鑒相器的線性鑒相范圍為,線性增益或。XORPD檢相器的線性鑒相范圍為,線性增益或。兩者同時使用時,可組成紋波抵消電路。在本設(shè)計(jì)中使用異或門鑒相器(XORPD)。K變??赡嬗?jì)數(shù)器:此模塊中使用了一個可逆計(jì)數(shù)器Count,當(dāng)鑒相器的輸出信號DU為低時,進(jìn)行加法運(yùn)算,達(dá)到預(yù)設(shè)模值則輸出進(jìn)位脈沖CARRY;為高時,進(jìn)行減法運(yùn)算,為零時,輸出錯位脈沖BORROW。Count的模塊Ktop由輸入信號Kmode預(yù)設(shè),一般為2的整數(shù)冪,這里模塊的變化范圍是。模塊的大小決定了DPLL的跟蹤步長,模值越大,跟蹤步長越小,鎖定時的相位誤差越小,但捕獲時間越長;模值越小,跟蹤步長越大,鎖定時的相位誤差越大,但捕獲時間越短。脈沖加減電路(I/D線路):脈沖加減電路實(shí)現(xiàn)了對輸入信號頻率和相位的跟蹤和調(diào)整,最終使輸出信號鎖定在輸入信號的頻率和信號上,從而達(dá)到同步的目的。N分頻器:對脈沖加減電路的輸出IDOUT再進(jìn)行N分頻,得到整個環(huán)路的輸出信號Fout。同時,因?yàn)閒c=IDCLOCK/2N,因此通過改變分頻值N可以得到不同的環(huán)路中心頻率fc。顯然,將I/D線路輸出接至外接的N分頻器,N次分頻后反饋至鑒相器輸入,其將是相位發(fā)生超前或滯后1/2N周期的脈沖信號B。 鑒相器的選擇早期的鑒相器大都是模擬鑒相器,由非線性器件構(gòu)成。目前最常用的有:乘積型鑒相器,觸發(fā)器式鑒相器和門鑒相器。在本設(shè)計(jì)中,考慮到實(shí)用性以及設(shè)計(jì)成本,采用最簡單的異或門鑒相器。 可編程K可逆計(jì)數(shù)器的設(shè)計(jì)可編程K可逆計(jì)數(shù)器(簡稱:K計(jì)數(shù)器): 可編程K可逆計(jì)數(shù)器模塊結(jié)構(gòu)根據(jù)模塊輸入輸出端口的功能不同,可將端口分為兩部分:K??刂撇糠郑?主要包括CS(片選)、WR(數(shù)據(jù)寫入)、DATA(數(shù)據(jù)口)、內(nèi)部當(dāng)前計(jì)數(shù)器為nt,內(nèi)部計(jì)數(shù)器的模值存放在nmod。由于K計(jì)數(shù)器受單片機(jī)的控制,因此要符合單片機(jī)接口的原則。: 計(jì)數(shù)器模值對照表在改變K模值時,首先選中CS為低電平,并將模值送到數(shù)據(jù)總線,然后由WR的上升沿江數(shù)據(jù)寫入,從而改變K計(jì)數(shù)器的模值。設(shè)計(jì)程序(Verilog語言描述)如下:always@(posedge wr) begin if(~cs) begin case(data) ’h00:nmod=’h0000。 end …… …… ’h0f:nmod=’hffff。 end default:begin nmod=’h0000。 end。 endcase endend計(jì)數(shù)輸入控制部分主要包括DU(內(nèi)部計(jì)數(shù)器方向控制)、CLK(Mfc時鐘輸入)。當(dāng)DU=0時,計(jì)數(shù)器方向向上,若當(dāng)前計(jì)數(shù)值大于或等于模值時,輸出一個進(jìn)位脈沖,然后將當(dāng)前計(jì)數(shù)器置零;當(dāng)DU=1時,計(jì)數(shù)器方向向下,若前計(jì)數(shù)值為零,輸出一個錯位脈沖,然后將當(dāng)前計(jì)數(shù)賦當(dāng)前模值。設(shè)計(jì)程序(Verilog語言描述
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1