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

正文內容

基于單片機和fpga的位同步信號提取(編輯修改稿)

2024-08-23 06:48 本頁面
 

【文章內容簡介】 碼的功能。功能具體描述如下:去抖動:利用軟件延時,待抖動消失后按鍵。防串鍵:利用輪回技術,按順序依次產(chǎn)生相應的鍵碼。按鍵識別:由程序對鍵盤進行掃描,通過檢測列輸出狀態(tài)確定閉合鍵。輸入口輸出口各設置一個。產(chǎn)生鍵碼:當時別到有鍵按下,通過行掃描碼和烈返回碼得到此碼。不同鍵碼實現(xiàn)不同功能。本次設計所使用的是44鍵盤,: 44鍵盤: 44鍵盤按鍵功能表屬 性鍵 名功 能功 能 描 述控制鍵MOD功能選擇任何狀態(tài)下使用FSEL選擇輸入信號頻率 350KHz 46875Hz CP4RST復位重新開始CLR清除輸入錯誤,可以清除ENT確認在自動狀態(tài)下,開始同步。在人工狀態(tài)下,輸入數(shù)據(jù)后,確認開始數(shù)字鍵0~9:輸入數(shù)字在人工輸入等待狀態(tài)下,用于輸入待同步信號的頻率,其它狀態(tài)下不可使用本次設計為節(jié)約成本,選擇非編碼鍵盤。 測頻、輸出顯示模塊為了設計一個具有通用性的位同步系統(tǒng),就應當在鎖相之前,知道輸入信號的頻率,這個功能應由系統(tǒng)自動完成。因此,需加入測頻模塊。在數(shù)字鎖相環(huán)中,N分頻器的分頻決定了其中心頻率,它是通過輸入信號的頻率經(jīng)過計算得到的,對鎖相環(huán)的穩(wěn)定有很重要的作用。因此,此模塊應具備下述功能: 第一,單片機發(fā)出清零脈沖,關閉輸入與門,使輸入信號與單片機T1腳斷開。 第二,單片機發(fā)出啟動脈沖,開啟輸入與門,使輸入信號與T1腳接通。 第三,單片機定時結束,封鎖輸入與門。 為了顯示出輸入信號的頻率,就得加入顯示模塊。在此,我采用動態(tài)顯示,因為動態(tài)顯示比靜態(tài)顯示有成本低等優(yōu)點。動態(tài)顯示的特點是,所有數(shù)碼管占用同一個通道,每一時刻只亮一個管,在不同的時刻,依次選中數(shù)碼管,從而實現(xiàn)動態(tài)掃描的目的。由于人眼有視覺誤差的特點,掃描速度到達一定程度是,人眼就會出現(xiàn)數(shù)碼管全亮的錯覺。 數(shù)字鎖相環(huán)(DPLL)模塊隨著數(shù)字電路技術的發(fā)展,尤其是大規(guī)模集成電路及微處理機的廣泛應用,使得通信與控制方面一些復雜的、靈敏的信號處理方法能在數(shù)字域付諸實施。鎖相環(huán)相干數(shù)字通信系統(tǒng)中的關鍵部件,為了與數(shù)字系統(tǒng)兼容,吸收數(shù)字電路固有的可靠性高、體積小、價格低等優(yōu)點,人們在發(fā)展模擬鎖相環(huán)的同時,亦致力于發(fā)展數(shù)字鎖相環(huán)。數(shù)字鎖相環(huán)除具有數(shù)字電路的優(yōu)點外,還解決了若干模擬環(huán)遇到的難題,如直流零點漂移、部件飽和、必須進行初始校準等,此外還具有離散樣值的實時處理能力。這些都表明,數(shù)字鎖相環(huán)的發(fā)展勢必然的。鎖相環(huán)是一個相位反饋控制系統(tǒng),在數(shù)字鎖相環(huán)中,由于誤差控制信號是離散的數(shù)字信號而不是模擬電壓,因而受控的輸出相位的改變是離散的而不是連續(xù)的;此外,環(huán)路組成部件也全用數(shù)字電路實現(xiàn),故而這種鎖相環(huán)就稱之為全數(shù)字鎖相環(huán)(簡稱DPLL)。當然,還有一類鎖相環(huán),部分環(huán)路部件為數(shù)字電路,但是環(huán)路控制仍是模擬形式,這類鎖相環(huán)只能是部分數(shù)字環(huán)。它由數(shù)字鑒相器、數(shù)字濾波器與數(shù)字壓控振蕩器三個數(shù)字電路部件組成。(其中,數(shù)控振蕩器由脈沖加減電路和N分頻器構成)數(shù)字鑒相器DPD環(huán)路濾波器DLF數(shù)控振蕩器 DCO 數(shù)字鎖相環(huán)的組成 第3章 各模塊的具體設計及實現(xiàn) 在本章詳細介紹了位同步系統(tǒng)中各個模塊的實現(xiàn)方案及設計過程。并本著完整、可靠、有效和節(jié)約的方針,對系統(tǒng)進行構建。 單片機模塊的設計與實現(xiàn) 由于單片機要完成測頻以及對其他模塊的控制,因此,單片機設計的質量直接影響到整個系統(tǒng)的性能。通過了解系統(tǒng)需求,選擇了8051型單片機。在編程方面,由于C語言較匯編語言有便于理解、記憶等優(yōu)點,所以選用了C語言對單片機進行編程。單片機的軟件分為五個狀態(tài):人工輸入等待狀態(tài)、自動等待狀態(tài)、自動測量狀態(tài)、捕捉狀態(tài)和同步狀態(tài)。: 系統(tǒng)狀態(tài)定義表狀態(tài)標志位狀態(tài)含義STATE_AUTO目前狀態(tài)為自動狀態(tài)STATE_WAIT目前狀態(tài)為等待狀態(tài),為自動狀態(tài)和人工狀態(tài)共用STATE_AUTO_MEN目前狀態(tài)為測量狀態(tài),為自動狀態(tài)專用STATE_MAN目前狀態(tài)為人工狀態(tài)STATE_MAN_INPUT目前狀態(tài)為輸入狀態(tài),為人工狀態(tài)和等待狀態(tài)專用STATE_MAN_SYN目前為人工同步狀態(tài)STATE_MAN_WAIT目前為人工等待狀態(tài)STATE_CAP目前為捕捉狀態(tài),為自動狀態(tài)和人工狀態(tài)共用STATE_SYN目前為同步狀態(tài),為自動狀態(tài)和人工狀態(tài)共用單片機模塊主要使用了定時/計數(shù)器(T0和T1)及定時中斷。其中T0用作定時器,采用工作方式一,定時為50ms;T1用作計數(shù)器,用來測量輸入信號的頻率。在不執(zhí)行中斷程序時,主程序檢測鍵盤是否按下。如有鍵按下,根據(jù)不同的按鍵,改變當前的狀態(tài)利用中斷判斷當前狀態(tài),執(zhí)行相應的操作,就可以檢測鍵盤和控制其它模塊的工作了。在T0的基礎上,T0中斷程序內部使用一個減計數(shù)器,記錄中斷次數(shù)。通過判斷計數(shù)器是否為零,決定服務程序的執(zhí)行。在同步狀態(tài)下,單片機定時測量輸入信號的頻率,及時進行跟蹤、捕捉和同步,實現(xiàn)控制鎖相環(huán)的目的。 鍵盤模塊的設計與實現(xiàn) 鍵盤的設計通常有兩種方法:鍵盤掃描法和鍵盤中斷法。在本設計中,采用了另外一種設計方法,就是利用FPGA強大的邏輯單元,自己設計和調用所需的芯片。因為MUX+PLUS II給FPGA設計帶來了很大的靈活性,并有著較強的混合設計方式。為實現(xiàn)不同的功能,它提供了大量的元器件和宏功能符號供設計人員使用。 為了實時掃描鍵盤,必須為鍵盤制定一個和單片機可雙向傳輸?shù)慕涌冢喊裀0口作為抵制和數(shù)據(jù)的復用口,P1用于測頻控制,P3口用于中斷和計數(shù),P2口作為鍵盤的掃描口。: 鍵盤與單片機連接表鍵盤引腳單片機引腳單片機腳號鍵盤引腳單片機引腳單片機腳號X125Y121X226Y222X327Y323X428Y424 設計中問題和解決方法 在鍵盤的設計中,存在一些需要解決的問題。在本節(jié),將會給出這些問題的解決方法。查詢是否有鍵按下,~“0”掃描碼FOH,~,只要有一列信號不為“1”,則表示有鍵按下。查詢按下鍵所在的位置。單片機將得到的信號去反,~,為1的就是鍵所在的列;要確定鍵所在的行,就需要進行逐行掃描?!?”,~“1”,即向P2口發(fā)送掃描碼FEH,接著輸入列檢查信號,若全為“1”,表示不在第一行,其余為“1”,在讀入列信號……這樣逐行發(fā)“0”掃描碼,直到找到按下鍵所在的行,將該掃描碼去反保留。對得到的列號和行號進行譯碼,得到鍵值。當用手按下一個鍵時,往往會出現(xiàn)所按鍵在閉合位置和斷開位置之間跳動幾下后才穩(wěn)定到閉合狀態(tài)的情況,這就是鍵的抖動。在釋放一個鍵的時候,也會出現(xiàn)類似情況。這樣會引起對鍵的多次讀入。解決方法是當單片機發(fā)現(xiàn)有鍵按下后,就立即停止逐行掃描,經(jīng)過延時(約10ms)后在進行。閉合鍵的多次讀入解決辦法。可能在實際操作中,為了防止“一次按鍵,多次掃描”的問題的發(fā)生,應作如下處理:a、應設計存取區(qū)lastkey,以保存上一次的掃描鍵值。b、掃描是否有鍵按下。如沒有,lastkey置零,表示此時鍵已松開或無鍵按下。c、逐行掃描,得到鍵特征值。d、將特征值與lastkey相比,若相等表示鍵松開,則重新掃描;否則,將特征值保存在lastkey中,作為下一次的比較對象。e、根據(jù)得到的特征值,判斷按鍵執(zhí)行相應的程序。f、繼續(xù)掃描鍵盤有無鍵按下。 鍵盤設計的軟件設計 通過對鍵盤模塊進行具體描述后,下一步就應當用軟件編程來實現(xiàn)單片機鍵盤掃描的功能,掃描的程序如下(若無鍵按下,則返回值為(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)。 } 測頻、輸出顯示模塊的設計與實現(xiàn) 在本節(jié)中,我們將測頻和輸出顯示模塊的設計與實現(xiàn)分開討論。 測頻部分 測頻部分的設計和實現(xiàn)主要分為電路設計與軟件編程設計。 測頻電路的設計實現(xiàn) 根據(jù)單片機的原理,定時器/計數(shù)器在每個機器周期的S5P2期間采樣Tx腳輸入信號,若一個機器周期的采樣值為1,下一個機器周期的采樣值為0,則計數(shù)器加1。由于識別一個高電平到低點平的跳變需要兩個機器周期,所以外部計數(shù)脈沖的頻率應小于fosc/24,且高電平與低電平的延續(xù)時間均不得小于一個機器周期。設計使用的單片機,fosc=12MHz,所以測量頻率finfosc/24=500KHz。因此還要加入一個附加電路,起到一個二分頻的作用,這樣測量頻率就可達到1MHz。: 測頻電路和分頻電路 測頻模塊的軟件設計根據(jù)測頻電路的設計功能,對其進行軟件那編程。首先,P16_ctrr發(fā)一個清零負脈沖,使UU2兩個D觸發(fā)器復位,其輸出封鎖與門G1和G2。接著由P17_ctrr發(fā)一個啟動正脈沖,其有效上升沿使U1=1,門G1被開放。而后,被側脈沖上升通過G2送T1計數(shù);同時啟動計時開始,直到定時結束,從P6_ctrr發(fā)一個負脈沖,清零U2,封鎖G2,停止T/C1計數(shù),完成一次頻率采樣過程。測量T/C1定時時間為500ms,T/C0定時為100ms,程序5次中斷后的時間就是5100ms=500ms,中斷次數(shù)的計數(shù)值在pret中。T/C0定時的計數(shù)初值:03CB0H。計數(shù)1采用16位計數(shù)。設T/C0為高優(yōu)先級,允許計數(shù)中斷過程定時中斷,即定時時間到就終止計數(shù)。 顯示部分為了讓使用者可以直觀的看到被跟蹤信號的頻率,所以在測頻后,加入了顯示模塊。由于顯示電路的數(shù)據(jù)由單片機提供,并且采用了動態(tài)掃描方式進行顯示,所以我們必須為單片機提供輸出鎖存器。并且在顯示電路的FPGA實現(xiàn)中,這里通過使用Verilog語言和圖形相結合的方法來設計實現(xiàn)現(xiàn)實模塊。在顯示電路中,我使用了MAX+PLUS II軟件中的7448芯片,還根據(jù)實際需要設計掃描和數(shù)據(jù)鎖存口。 7448芯片介紹7448芯片是一塊專用于7段數(shù)碼管的驅動芯片,因為其輸入為8421BCD碼,輸出為段顯示碼,所以被廣泛地應用在顯示電路中。: 7448芯片模型部分引腳功能如下:滅燈輸入BIN:BIN是特殊控制端,當BI=0時,無論其他輸入端是什么電平,所有各段輸出均為0。試燈輸入LTN:當LT=0時,無論其他輸入端是什么狀態(tài),所有各段輸出均為1,顯示為“8”。該端口主要用于測試數(shù)碼管的好壞。動態(tài)滅零輸入RBIN:當LT=1,RBIN=0且輸入碼DCBA=0000時,各段輸出均為低電平,與BCD碼對應的字形熄零。 動態(tài)掃描電路的軟件設計根據(jù)動態(tài)掃描電路的功能與原理圖(),下面對掃描顯示的外部電路進行設計。 所試: 掃描顯示外部電路圖圖中l(wèi)adisplay模塊的輸入引腳分為以下兩部分:數(shù)據(jù)輸入控制部分:主要包括CS(片選)、WR(寫入)、ADD[2..0](內部數(shù)據(jù)存儲器地址)、DATA[6..0](數(shù)據(jù)輸入)。掃描控制部分:主要包括clk(時鐘脈沖輸入)、sel[7..0](數(shù)碼管選通)、bcdout[6..0](數(shù)碼管輸出)。根據(jù)本模塊的設計原理,需要在顯示部分開辟數(shù)據(jù)存儲區(qū),用來存放需要顯示的數(shù)據(jù)。根據(jù)計數(shù)器的值,選中所要亮的數(shù)碼管,然后將數(shù)據(jù)送到7448芯片的數(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。
點擊復制文檔內容
數(shù)學相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1