版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 智能小車控制信號的FPGA實現(xiàn)</p><p> 課程 名稱 現(xiàn)代電子技術(shù)課程實踐 </p><p> 指導(dǎo) 教師 </p><p> 班 級 11電子二班 </p><p> 姓 名
2、 </p><p> 學(xué) 號 </p><p> 日 期 2014/12/23 </p><p><b> 摘要</b></p><p> 基于FPGA(現(xiàn)場可編程門陣列)的智能小車實現(xiàn)對一些危險,環(huán)境惡劣,遠程處理的
3、一些施工場地或者研究的時候進行監(jiān)測、控制、處理相關(guān)危險的緊急情況??梢詭椭祟愒跓o法生存的情況下完成一些檢測任務(wù)。</p><p> 本論文是研究SOPC(片上可編程系統(tǒng))的基礎(chǔ)上,提出了基于FPGA的智能車能自動采集賽道信息進行跑動的方案。利用FPGA來實現(xiàn)各個模塊所需要的信號。</p><p> 論文主要包括三個部分:在對整個智能車分析需要哪些信號的基礎(chǔ)上,設(shè)計了相應(yīng)的軟件程序。通
4、過QuartersⅡ編寫相應(yīng)的軟件程序,第一部分是產(chǎn)生驅(qū)動CCD所需要的信號,這部分有一組PWM(脈沖寬度調(diào)制)波控制信號,A0(模擬電壓輸出)信號,SI(串行輸入)輸入信號,CLK(時鐘信號);最核心的是CCD(電荷耦合元件)信號的處理,這部分如果解決就基本解決總的問題了。第二部分是電機驅(qū)動所需要的信號,這部分需要一組PWM波控制信號;第三部分是舵機信號所需要的信號,這部分需要一組PWM波控制信號。</p><p&
5、gt; 關(guān)鍵詞:CCD, FPGA,PWM,Smart car</p><p><b> ABSTRACT</b></p><p> Based FPGA (field programmable gate array) of the smart car to achieve some dangerous, harsh environment, some of t
6、he construction site or remote processing time study to monitor, control, dealing with emergency situations related hazards. You can help people complete the task in the case of some tests can not survive.</p><
7、;p> This thesis is to study the SOPC (system-on-chip programmable), based on the proposed FPGA-based smart car can automatically collect information running track program. Using FPGA to achieve the desired signal for
8、 each module.</p><p> Dissertation consists of three parts: in which signals the need for the smart car based on the analysis, design the corresponding software program. By QuartersⅡ preparation of the corr
9、esponding software program, the first part is to generate a signal required for driving the CCD, this part has a plurality of PWM (pulse width modulation) wave control signal, A0 (analog voltage output) signal, SI (seria
10、l input) of the input signal, CLK (clock signal); the core of the CCD(Charge-coupled device) sig</p><p> Keyword: CCD, FPGA,PWM,Smart car</p><p><b> 目錄</b></p><p> HE
11、FEI UNIVERSITY1</p><p><b> 一、 緒論5</b></p><p> 1.1 課題背景5</p><p> 1.2 本課題研究的目的和意義5</p><p> 1.3 課題系統(tǒng)框圖6</p><p> 二、 課程設(shè)計任務(wù)及要求6</p>
12、;<p> 2.1 設(shè)計任務(wù)6</p><p> 2.2 設(shè)計要求6</p><p> 2.3 功能設(shè)計7</p><p> 三、 整體設(shè)計思想7</p><p> 3.1設(shè)計細化框圖7</p><p><b> 四、 詳細設(shè)計8</b></p>
13、<p> 4.1 TSL1401 CCD工作原理8</p><p> 4.1.1 TSL1401引腳描述8</p><p> 4.1.2 功能描述8</p><p> 4.1.3 積分時間or曝光時間8</p><p> 4.2 設(shè)計思路9</p><p> 4.2.1 舵機9<
14、;/p><p> 4.2.2 驅(qū)動10</p><p> 4.2.3 CCD12</p><p> 五、時序仿真波形12</p><p> 5.1 舵機PWM1仿真圖12</p><p> 5.2 CCD PWM2仿真圖13</p><p> 5.3 電機驅(qū)動PWM3仿真圖1
15、3</p><p> 5.4 電機驅(qū)動PWM4仿真圖14</p><p> 5.5 AD驅(qū)動仿真波形14</p><p> 六、 設(shè)計總結(jié)14</p><p> 七、 參考文獻目錄15</p><p> 八、 附錄(源程序)16</p><p> 8.1 CCD驅(qū)動程序1
16、6</p><p> 8.2 電機驅(qū)動程序17</p><p> 8.3 舵機驅(qū)動程序18</p><p> 8.4 AD驅(qū)動程序及仿真波形18</p><p><b> 一、 緒論</b></p><p><b> 1.1 課題背景</b></p>
17、;<p> 隨著進入現(xiàn)代高科技社會,人們生活中有越來越多全自動化的產(chǎn)品出現(xiàn)供我們使用,這使得我們的生活質(zhì)量不斷地提高,同時也提高了我們對生活質(zhì)量的要求。從以往到現(xiàn)在,例如:以前使用的馬車到現(xiàn)在的汽車,以前的人工通信到現(xiàn)在的移動電話,以前手洗衣服到現(xiàn)在的洗衣機等等。都給我們的生活帶來了方便,而在一些未知的領(lǐng)域更需要探索,為了是我們自己冒風(fēng)險小,工作更加的舒適,安全,所以需要一些智能的自動化的能夠代替人類完成相應(yīng)工作的小機器
18、人一樣——智能車。</p><p> 智能車是一種智能化行進的小車,能夠自動采集信息來前進,而這種智能車能夠適應(yīng)不同的惡劣環(huán)境,不受空間,輻射,磁場,重力,溫度等條件的影響,可以進入人類無法進入的條件進行探測任務(wù)。從以前到現(xiàn)在,隨著社會的不斷發(fā)展,使得全自動化的智能的東西越來越需要,從以前只應(yīng)用到軍工的產(chǎn)品到現(xiàn)在能夠民用,也是由于相關(guān)的技術(shù)越來越成熟,對這方面的研究更加深入。</p><p&
19、gt; 隨著現(xiàn)代科技不斷的發(fā)展,智能的東西應(yīng)用越來越廣泛,使得我們對于研究智能車應(yīng)用的領(lǐng)域的擴展有以下發(fā)展的理由:</p><p> ?。?)智能車可以代替人類進入太空進行探測,例如登錄月球。</p><p> (2)智能車可以在一些高溫、有毒氣體、排爆等危險工作情況中脫離出來,讓其代之工作。</p><p> ?。?)可以完成清潔工作,例如自動的吸塵器。<
20、;/p><p> 1.2 本課題研究的目的和意義</p><p> 智能化的東西是現(xiàn)在社會不可缺的工具,而智能小車在經(jīng)過一些改良的特殊設(shè)計后可以應(yīng)用到更多廣泛的領(lǐng)域,例如飛機的自動駕駛,吸塵器,惡劣環(huán)境的檢測等。給我們的工作,日常生活,科學(xué)研究帶來了更多的方便。同時在一些民用的,工業(yè)用的智能車都存在一些問題:</p><p><b> 一、系統(tǒng)功能單一&
21、lt;/b></p><p> 比如探測智能車功能單一,而針對不同的探測對象要分別進行不同的專門設(shè)計,屬于單一型,我們可以設(shè)計一個通用型的產(chǎn)品出來。</p><p><b> 二、操作控制復(fù)雜</b></p><p> 由于只智能車的控制器比較復(fù)雜,在不同的控制場合需要專門的操作人員來操控,這增加了成本以及復(fù)雜性。</p>
22、;<p><b> 三、系統(tǒng)開發(fā)復(fù)雜</b></p><p> 現(xiàn)今好多同類型的智能車集成度不高,有的設(shè)計中很多分為器件組成的外圍電路,這使得在應(yīng)用的時候更加復(fù)雜,同時造成穩(wěn)定性低。</p><p> FPGA(Field Programmable Gate Array)現(xiàn)場可編程門陣列,通過FPGA解決了以上述問題,它是可編程邏輯器件,它的規(guī)模大
23、,可以代替幾千塊IC芯片,隨著技術(shù)的不斷發(fā)展,采用FPGA來編程設(shè)計帶來了許多便利,可以根據(jù)設(shè)計要求反復(fù)修改程序,能夠直接寫代碼、調(diào)試和維護,這樣就降低了成本。</p><p> 1.3 課題系統(tǒng)框圖</p><p> 本系統(tǒng)框圖如圖1所示,主要分為三個大模塊:CCD信號產(chǎn)生模塊、舵機信號產(chǎn)生模和驅(qū)動信號產(chǎn)生模塊。</p><p> 圖1 自頂向下設(shè)計框圖&l
24、t;/p><p> 二、 課程設(shè)計任務(wù)及要求</p><p><b> 2.1 設(shè)計任務(wù)</b></p><p> ?、?用Quartus Ⅱ 寫出設(shè)計的源程序;</p><p> ?、?用SignalTap Ⅱ嵌入式邏輯分析儀測試所產(chǎn)生信號的波形;</p><p> ?、?使用邏輯分析儀或者示波
25、器測試所產(chǎn)生信號的波形;</p><p> ④ 心得體會——本次在實踐課程中你的感受;你從實踐課程中獲得了哪些收益;本次實實踐課程的成功之處;本次實踐課程中還有待改進的地方;</p><p><b> 2.2 設(shè)計要求</b></p><p> ?、?熟練地運用數(shù)字系統(tǒng)的設(shè)計方法進行數(shù)字系統(tǒng)設(shè)計;</p><p>
26、 ② 能使用FPGA芯片產(chǎn)生智能小車所需要的各路信號。</p><p><b> 2.3 功能設(shè)計</b></p><p> ?、?舵機的PWM波產(chǎn)生;</p><p> ?、?驅(qū)動的PWM波產(chǎn)生,使能端高電平;</p><p> ③ 線性CCD的PWM波產(chǎn)生,使能端高電平。</p><p>
27、<b> 三、 整體設(shè)計思想</b></p><p><b> 3.1設(shè)計細化框圖</b></p><p> ?、伲憾鏅C的PWM波產(chǎn)生</p><p> 圖2 舵機PWM波產(chǎn)生框圖</p><p> ②:驅(qū)動的PWM波產(chǎn)生;</p><p> 圖3 驅(qū)動PWM波產(chǎn)生
28、框圖</p><p> ③:CCD的PWM波產(chǎn)生;</p><p> 圖4 CCD信號產(chǎn)生框圖</p><p><b> 四、 詳細設(shè)計</b></p><p> 4.1 TSL1401 CCD工作原理</p><p> 4.1.1 TSL1401引腳描述</p><
29、p> TSL1401引腳如下表1所示:</p><p> 表1 CCD集成模塊引腳</p><p> 4.1.2 功能描述</p><p> TSL1401線性CCD傳感器包含128個線性排列的光電二極管。每個光電二極管都有各自的積分電路,以下我們將此電路統(tǒng)稱為像素。每個像素所采集的圖像灰度值與它所感知的光強和積分時間成正比。以上名詞所對應(yīng)的物理量綱為
30、:</p><p> (1)灰度值:輸出電壓Vout;</p><p> ?。?)光強:器件對給定光波長在電壓上的反應(yīng)Ve;(Ve=V/(μJ/cm2)*μW/cm2)</p><p> (3)積分時間:即曝光時間,tint。</p><p> 4.1.3 積分時間or曝光時間</p><p> ?、?TSL14
31、01曝光時間</p><p> TSL1401技術(shù)文檔中關(guān)于積分時間做了大量說明,其實歸根結(jié)底可以由圖4-2表示。圖中第19個CLK到下一個SI開始的這段時間,就是CCD的積分時間,即曝光時間。之前的18個CLK的時間為積分器的復(fù)位時間。</p><p> ?、?關(guān)于曝光時間長短討論</p><p> 根據(jù)TSL1401技術(shù)文檔的提供的數(shù)據(jù),該器件的最大曝光時間
32、為100ms,即無論你實際曝光多長時間,只要超過100ms,其圖像效果和100ms是一樣的。那么如何選擇合適的曝光時間,就成了需要面對的問題。</p><p> 即使是相同的物體,在不同的光線環(huán)境下得到的圖像是不一樣的。從理論上講,在光線較暗的環(huán)境中,應(yīng)該增加曝光時間,以換取亮度合適的圖像;在光線較強的環(huán)境中,應(yīng)該減少曝光時間,以防止圖像出現(xiàn)飽和現(xiàn)象。</p><p> 其針對像素輸出
33、值A(chǔ)O的采集方法是一樣的,如圖5所示。使用者需要在SI持續(xù)高電平20ns后產(chǎn)生第1個CLK信號,并在每個CLK信號的下降沿時采集AO引腳的輸出的電壓值。在采集了128個像素后,還必須生成第129個CLK以結(jié)束本次采集。在第129個CLK之后到下一個SI信號之間的時間就是下次采集的曝光時間(這里說的曝光時間是忽略了第19到129個CLK之間的時間)。</p><p><b> 圖5 操作波形圖</
34、b></p><p><b> 4.2 設(shè)計思路</b></p><p> 根據(jù)智能小車所需要的模塊,系統(tǒng)設(shè)計采用自頂向下設(shè)計方法,由舵機部分、驅(qū)動部分、CCD部分三個部分組成,先編寫各個模塊的程序,通過仿真,實際測量。如果每個模塊仿真和相應(yīng)測量的信號與理論一樣,那就算成功了。最后就是把每個模塊的所需要的信號整合到一起。</p><p&g
35、t;<b> 4.2.1 舵機</b></p><p> 舵機是一個微型的伺服控制系統(tǒng),具體的控制原理可以用下圖6表示: </p><p><b> 圖6 舵機控制</b></p><p> 工作原理是控制電路接收信號源的控制脈沖,并驅(qū)動電機轉(zhuǎn)動;齒輪組將電機的速度成大倍數(shù)縮小,并將電機的輸出扭矩放大響應(yīng)倍數(shù),然后
36、輸出;電位器和齒輪組的末級一起轉(zhuǎn)動,測量舵機軸轉(zhuǎn)動角度;電路板檢測并根據(jù)電位器判斷舵機轉(zhuǎn)動角度,然后控制舵機轉(zhuǎn)動到目標(biāo)角度或保持在目標(biāo)角度。</p><p> 模擬舵機需要一個外部控制器(遙控器的接收機)產(chǎn)生脈寬調(diào)制信號來告訴舵機轉(zhuǎn)動角度,脈沖寬度是舵機控制器所需的編碼信息。舵機的控制脈沖周期20ms,脈寬從0.5ms-2.5ms,分別對應(yīng)-90度到+90度的位置。如下圖7所示: </p><
37、;p><b> 圖7 舵機打角原理</b></p><p> 由上圖可以看出,可以給適合的PWM波信號就可以控制轉(zhuǎn)動的角度。</p><p><b> 4.2.2 驅(qū)動</b></p><p><b> 模塊特性 :</b></p><p> ◆一路電機驅(qū)動輸出
38、,單板典型最大電流68A,最小在50A; </p><p> ◆增加總線驅(qū)動芯片74LVC245,提高信號驅(qū)動能力,同時隔離BTN7961和單片機,保護BTN7961和單片機芯片,防止BTN7961損壞后將電池電壓直接輸入到單片機,進而燒壞單片機控制引腳; </p><p> ◆增加MIC5219電源芯片,為總線驅(qū)動芯片74LVC245提供電源,實現(xiàn)驅(qū)動芯片和單片機電平匹配。</
39、p><p> ◆電流采樣電路增加濾波電路,電流信號經(jīng)過濾波處理后輸入單片機,采集信號更精確; </p><p> ◆電機輸出端增加壓敏電阻,防止電機瞬間換向產(chǎn)生峰值電壓進而損壞其它芯片; </p><p> ◆板子布線進過優(yōu)化,過電流能力強;同時也更有利于散熱; </p><p> ◆驅(qū)動板工作電壓范圍:7V~14V;最大不能超過16V;
40、</p><p> ◆電機工作頻率范圍:0~25KHz;推薦驅(qū)動頻率范圍:3KHz~8KHz;</p><p> ◆原裝進口英飛凌芯片,該驅(qū)動模塊貼片默認為BTN7971,兼容BTS7960B(默認)、 BTN7960B、BTS7970B、BTN7970B、BTN7971B;性能比其它芯片更優(yōu)秀。 </p><p><b> 圖8 驅(qū)動模塊</
41、b></p><p><b> 圖9 驅(qū)動電路</b></p><p> 信號對應(yīng)關(guān)系: Motor_In1對應(yīng)IN1、Motor_In2對應(yīng)IN2、Motor_Inh對應(yīng)INH.其中INH作為芯片的使能信號使用。INH——使能引腳,IN1——PWM3,IN2——PWM4,3.3V輔助電源。所以在驅(qū)動這一塊主要是通過FPGA芯片上輸出兩路PWM波就可以了,外
42、加上一個使能端口高電平。</p><p><b> 4.2.3 CCD</b></p><p> 主要是CCD這一塊的處理,本次設(shè)計所用的CCD是TSL1401,CCD在驅(qū)動信號的作用下進行曝光,將采集到的模擬電壓輸出,其中在白色賽道的電壓值要明顯大于黑色賽道部分,本次設(shè)計是將所得的模擬電壓經(jīng)過A/D芯片得到相應(yīng)的數(shù)字量,即0(黑)和1(白),最后通過處理這些信號
43、控制小車軌跡。這里有曝光量、曝光時間和曝光周期三個概念,曝光量由曝光時間和曝光周期確定,曝光量越大,CCD輸出的電壓值越高,但電壓太高就會導(dǎo)致CCD輸出出現(xiàn)飽和,即在黑線和白線所得的電壓一樣,這種情況不利于賽道辨別。相反曝光時間太短,CCD輸出的電壓又很低,幾乎接近于零,所以控制好曝光量對小車控制很重要。曝光周期就相當(dāng)于CCD什么時候采集一次賽道信息,并將所得的信息轉(zhuǎn)換為模擬電壓,所以曝光周期不能太大,否則小車的反映速度會降低,本次設(shè)計
44、我們?nèi)テ毓庵芷谠?0ms左右,這樣在程序中通過控制曝光時間就可以很好的控制曝光量,我們這次采用的是動態(tài)的曝光時間,當(dāng)在光線強的時候是曝光時間較小,光線較弱的時候是曝光時間大,這樣就可以很好的控制曝光量了。</p><p><b> 五、時序仿真波形</b></p><p> 5.1 舵機PWM1仿真圖</p><p> 圖10 舵機PWM
45、波</p><p> 5.2 CCD PWM2仿真圖</p><p> 圖11CCD的PWM波</p><p> 5.3 電機驅(qū)動PWM3仿真圖</p><p> 圖12 電機驅(qū)動的PWM波</p><p> 5.4 電機驅(qū)動PWM4仿真圖</p><p> PWM4可以直接給低電平
46、接地。</p><p> 5.5 AD驅(qū)動仿真波形</p><p> 圖13 AD驅(qū)動仿真波形</p><p><b> 六、 設(shè)計總結(jié)</b></p><p> 本次課程設(shè)計是用FPGA產(chǎn)生智能小車的各種控制信號,和單片機相比,F(xiàn)PGA有著更快的時鐘和運算速度,處理數(shù)據(jù)也變得更快,更精確。當(dāng)然FPGA主要是應(yīng)用
47、于運算的,本次利用其控制智能車的驅(qū)動信號主要是為了從單片機到FPGA的一個過渡。</p><p> 通過我們組的努力,最終按要求產(chǎn)生了電機驅(qū)動信號,舵機驅(qū)動信號,CCD驅(qū)動信號,A/D驅(qū)動信號,并用Quartus Ⅱ軟件仿真出各個波形。</p><p> CCD:CCD驅(qū)動程序程序的產(chǎn)生主要是利用時鐘分頻后,再計數(shù)判斷產(chǎn)生,主要是SI信號、CLK信號,設(shè)計是要求產(chǎn)生128個CLK信號是
48、SI信號翻轉(zhuǎn)一個時鐘,其中CLK時鐘周期為1us,試驗仿真所得結(jié)果和理論預(yù)期的一致。</p><p> AD:AD驅(qū)動信號主要是用來處理CCD輸出的AO信號,將其輸出的模擬量轉(zhuǎn)化為數(shù)字信號,這樣處理起來更加簡單,試驗結(jié)果和理論預(yù)期一致。</p><p> 舵機:舵機驅(qū)動信號主要是用于控制小車行駛方向,周期為兩毫秒,通過控制脈寬來其打角的方向和度數(shù),本次只產(chǎn)生一個打零度角的信號,實際仿真
49、波形和理論計算一致。</p><p> 電機:電機主要由兩路PWM信號控制,其中一路給零,另外一路提供脈寬可調(diào)的PWM,頻率設(shè)置為10Khz,本次設(shè)計要求脈寬為周期的10%,即為0.005ms,試驗仿真波形和理論一致。</p><p> 在這過程中,我學(xué)到了很多知識,了解了FPGA的強大,因為我發(fā)現(xiàn)用FPGA幾乎可以完成單片機的所有功能,并且我們所懂的還只是鳳毛麟角,很多FPGA的功能
50、我們都還不知道。不僅如此,本次的課程設(shè)計同時提高了我們對智能車控制方面的了解。之前有些不懂的地方從這次新學(xué)習(xí)后又明白了很多,對各個信號的作用有了更多的了解。</p><p> 在設(shè)計的過程中難免會遇到了一些問題,尤其是在CCD驅(qū)動信號的產(chǎn)生中起初并沒有什么思路,后來在隊友和老師的幫助下得到了解決,我在老師給予我的關(guān)于CCD的論文中得到了很多的啟發(fā),并最終得到我們所需的驅(qū)動信號。雖然本次課程設(shè)計將要結(jié)束,但是我對
51、FPGA的學(xué)習(xí)會一直堅持下去,本次課程設(shè)計的也會對我今后的學(xué)習(xí)之路有著很大的幫助。</p><p><b> 七、 參考文獻目錄</b></p><p> [10] 康光華,《電子技術(shù)基礎(chǔ)》 數(shù)字部分[M].北京.高教出版社.2006.1</p><p> [11] 潘松,《EDA實用教程》[M].北京.科學(xué)出版社,2002.10<
52、/p><p> [12] 潘松,《EDA技術(shù)與VHDL》[M].北京.清華大學(xué)出版社,2005.7</p><p> [13] 候建軍,郭勇.SOPC技術(shù)基礎(chǔ)教程 [M].北京.清華大學(xué)出版社,2013</p><p> [14] 周立功,SOPC嵌入式系統(tǒng)基礎(chǔ)教程 [M].北京.北京航空航天大學(xué)出版社,2006</p><p> [15
53、] 盧杰,賴毅.VHDL與數(shù)字電路設(shè)計.北京:科學(xué)出版社,2001</p><p> [16] 王金明,楊吉斌.數(shù)字系統(tǒng)設(shè)計與Verilog HDL.北京:電子工業(yè)出版社,2002 </p><p> [17] 張明.Verilog HDL實用教程.成都:電子科技大學(xué)出版社,1999</p><p> [19] J.Bhasker著,徐振林等譯.Verilog
54、 HDL硬件描述語言.北京:機械工業(yè)出版社,2000</p><p> [20] 劉明業(yè),將敬旗,刁嵐松等譯.硬件描述語言Verilog.北京:清華大學(xué)出版社,2001</p><p> 八、 附錄(源程序)</p><p> 8.1 CCD驅(qū)動程序</p><p> module ccd (clk,//50M系統(tǒng)時鐘</p&g
55、t;<p> clk_500,//clk驅(qū)動信號,周期為2us</p><p> si);//si驅(qū)動信號</p><p> input clk;</p><p> output si,clk_500;</p><p> parameter count_128=8'd128,</p>&
56、lt;p> DIV= 100;</p><p> reg si,clk_500; //500ns </p><p> reg [14:0] count1=0;</p><p> reg [24:0] count;</p><p> always @(posedge clk)//得到clk驅(qū)動信號<
57、;/p><p><b> begin</b></p><p> if( count == DIV)</p><p><b> begin</b></p><p> count <= 0;</p><p> clk_500= ~clk_500;</p>
58、<p><b> end</b></p><p><b> else</b></p><p> count <= count + 1'b1;</p><p><b> end</b></p><p> always@(posedge clk
59、_500 )//得到si驅(qū)動信號</p><p> if(count1==count_128)</p><p><b> begin</b></p><p> count1<=1;</p><p><b> si<=1;</b></p><p><b
60、> end</b></p><p><b> else</b></p><p><b> begin</b></p><p><b> si<=0;</b></p><p> count1<=count1+1;//狀態(tài)計數(shù)</p&g
61、t;<p><b> end</b></p><p><b> endmodule</b></p><p> 8.2 電機驅(qū)動程序</p><p> module duoji(clk,out,m,clk_1M);//clk為50M時鐘,clk_1000為1M,out為輸出信號,z和m分別為周期和脈寬&
62、lt;/p><p> input clk;//clk=50M=50 000 000</p><p> input [7:0] m;//0.5ms-0度 1ms-45度 1.5ms90度 2ms135度 2.5ms180度</p><p> output out,clk_1M; </p><p> reg [15:0] count;
63、//PMW脈寬計數(shù),周期計數(shù)</p><p><b> reg out;</b></p><p> reg clk_1M;//1Mhz</p><p> reg [24:0] count1;</p><p> parameter z=8'd100,//周期為0.1ms</p><p
64、> div=10'd50;</p><p> always @(posedge clk)//分頻得到子時鐘</p><p><b> begin</b></p><p> if( count1 == div)</p><p><b> begin</b></p>
65、<p> count1 <= 0;</p><p> clk_1M= ~clk_1M;</p><p><b> end</b></p><p><b> else</b></p><p> count1 <= count1 + 1'b1;</p&g
66、t;<p><b> end</b></p><p> always @(posedge clk_1M)</p><p><b> begin</b></p><p> count=count+1;</p><p> if(count>z) //打到周期預(yù)設(shè)定的數(shù)
67、值,就清零</p><p><b> begin</b></p><p><b> count=0;</b></p><p><b> end</b></p><p> if(count<m) </p><p><b&g
68、t; out=1;</b></p><p> else out=0; </p><p><b> end</b></p><p> endmodule </p><p> 8.3 舵機驅(qū)動程序</p><p> module duoji(clk,ou
69、t,m,clk_1000);//clk為50M時鐘,clk_1000為1M,out為輸出信 號,z和m分別為周期和脈寬</p><p> input clk;//clk=50M=50 000 000</p><p> input [7:0] m;//0.5ms-0度 1ms-45度 1.5ms90度 2ms135度 2.5ms180度</p><p> o
70、utput out,clk_1000; </p><p> reg [15:0] count; //PMW脈寬計數(shù),周期計數(shù)</p><p><b> reg out;</b></p><p> reg clk_1000;//50khz</p><p> reg [24:0] count1;</p&
71、gt;<p> parameter z=8'd20000,//周期為20ms</p><p> div=10'd50;</p><p> always @(posedge clk)//分頻得到子時鐘</p><p><b> begin</b></p><p> if( coun
72、t1 == div)</p><p><b> begin</b></p><p> count1 <= 0;</p><p> clk_1000= ~clk_1000;</p><p><b> end</b></p><p><b> else&
73、lt;/b></p><p> count1 <= count1 + 1'b1;</p><p><b> end</b></p><p> always @(posedge clk_1000)</p><p><b> begin</b></p><
74、;p> count=count+1;</p><p> if(count>z) //打到周期預(yù)設(shè)定的數(shù)值,就清零</p><p><b> begin</b></p><p><b> count=0;</b></p><p><b> end</b>
75、;</p><p> if(count<m) </p><p><b> out=1;</b></p><p> else out=0; </p><p><b> end</b></p><p> endmodule
76、</p><p> 8.4 AD驅(qū)動程序及仿真波形</p><p> module ADC0809_drive(clk_500kHz,</p><p><b> rst_n,</b></p><p> EOC,//約100us后EOC變?yōu)楦唠娖睫D(zhuǎn)換結(jié)束</p><p> START,//
77、啟動信號,上升沿有效(至少100ns)</p><p> OE,//高電平打開三態(tài)緩沖器輸出轉(zhuǎn)換數(shù)據(jù)</p><p> ALE,//高電平有效,選擇信道口</p><p> ADDA,//因為ADDB,ADDC都接地了,這里只有ADDA為變量</p><p> DATA, //轉(zhuǎn)換數(shù)據(jù)</p><p><
78、b> DATA_R);</b></p><p> input EOC,clk_500kHz,rst_n;</p><p> input[7:0] DATA;</p><p> output reg START,OE,ALE,ADDA;</p><p> output reg [7:0] DATA_R;</p&
79、gt;<p> reg[4:0] CS,NS;</p><p><b> parameter</b></p><p> IDLE=5'b00001,</p><p> START_H=5'b00010,</p><p> START_L=5'b00100,</p>
80、;<p> CHECK_END=5'b01000,</p><p> GET_DATA=5'b10000;</p><p> always @(posedge clk_500kHz)</p><p><b> case(CS)</b></p><p><b> IDLE:
81、</b></p><p> NS=START_H;</p><p> START_H: </p><p> NS=START_L;</p><p><b> START_L:</b></p><p> NS=CHECK_END;</p><p>
82、; CHECK_END:</p><p><b> if(EOC)</b></p><p> NS=GET_DATA;</p><p><b> else</b></p><p> NS=CHECK_END;</p><p><b> GET_DATA:
83、</b></p><p> NS=IDLE; </p><p><b> default:</b></p><p><b> NS=IDLE;</b></p><p><b> endcase </b></p><p>
84、always @(posedge clk_500kHz)</p><p> if(!rst_n)</p><p><b> CS<=IDLE;</b></p><p><b> else </b></p><p><b> CS<=NS;</b></p
85、><p> always @(posedge clk_500kHz)</p><p><b> case(NS)</b></p><p><b> IDLE:</b></p><p><b> begin</b></p><p><b>
86、 OE<=0;</b></p><p><b> START<=0;</b></p><p><b> ALE<=0;</b></p><p><b> ADDA<=1;</b></p><p><b> end</b
87、></p><p><b> START_H:</b></p><p><b> begin</b></p><p><b> OE<=0;</b></p><p><b> START<=1;</b></p>&l
88、t;p><b> ALE<=1;</b></p><p><b> ADDA<=1;</b></p><p><b> end</b></p><p><b> START_L:</b></p><p><b> be
89、gin</b></p><p><b> OE<=0;</b></p><p><b> START<=0;</b></p><p><b> ALE<=1;</b></p><p><b> end</b></
90、p><p> CHECK_END:</p><p><b> begin</b></p><p><b> OE<=0;</b></p><p><b> START<=0;</b></p><p><b> ALE<=
91、0;</b></p><p><b> end</b></p><p><b> GET_DATA:</b></p><p><b> begin</b></p><p><b> OE<=1;</b></p>&l
92、t;p> DATA_R<=DATA;</p><p><b> START<=0;</b></p><p><b> ALE<=0;</b></p><p><b> end</b></p><p><b> default:<
93、/b></p><p><b> begin</b></p><p><b> OE<=0;</b></p><p><b> START<=0;</b></p><p><b> ALE<=0;</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能控制小車課程設(shè)計
- 智能小車課程設(shè)計--智能循跡小車
- 智能小車課程設(shè)計--智能巡線小車的設(shè)計
- 課程設(shè)計-- 智能小車循跡控制系統(tǒng)
- 遙控智能小車課程設(shè)計
- 智能小車控制系統(tǒng)課程設(shè)計說明書
- 基于FPGA的智能小車控制技術(shù).pdf
- 小車自動往返控制課程設(shè)計
- 智能控制課程設(shè)計
- 嵌入式課程設(shè)計--智能循跡小車設(shè)計
- 單片機課程設(shè)計--智能小車—硬件設(shè)計
- 單片機課程設(shè)計---電動智能小車
- 單片機智能藍牙小車課程設(shè)計
- 智能小車課程設(shè)計說明書
- fpga正交信號發(fā)生器課程設(shè)計
- plc課程設(shè)計---運料小車的控制設(shè)計
- plc小車運行方向控制課程設(shè)計
- 智能交通控制的課程設(shè)計
- fpga課程設(shè)計源碼-時鐘-樂曲-函數(shù)信號電路
- 課程設(shè)計---小車多方式運行的plc控制
評論
0/150
提交評論