基于FIR算法的汽車動態稱重系統的理論研究_第1頁
基于FIR算法的汽車動態稱重系統的理論研究_第2頁
基于FIR算法的汽車動態稱重系統的理論研究_第3頁
基于FIR算法的汽車動態稱重系統的理論研究_第4頁
基于FIR算法的汽車動態稱重系統的理論研究_第5頁
已閱讀5頁,還剩39頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、編號 本科生畢業設計基于FIR算法的汽車動態稱重系統的理論研究Theoretical Research of FIR Algorithm-Basedin Vehicle Dynamic Weighing Systems學生姓名專業學號指導教師學院二一三年六月畢業設計(論文原創承諾書1.本人承諾:所呈交的畢業設計(論文 ,是認真學習理解學校的長春理工大學本科畢業設計(論文工作條例后,在教師的指導下,保質保量獨立地完成了任務書中規定的內容,不弄虛作假,不抄襲別人的工作內容。2.本人在畢業設計(論文中引用他人的觀點和研究成果,均在文中加以注釋或以參考文獻形式列出,對本文的研究工作做出重要貢獻的個人和

2、集體均已在文中注明。3.在畢業設計(論文中對侵犯任何方面知識產權的行為,由本人承擔相應的法律責任。4.本人完全了解學校關于保存、使用畢業設計(論文的規定,即:按照學校要求提交論文和相關材料的印刷本和電子版本;同意學校保留畢業設計(論文的復印件和電子版本,允許被查閱和借閱;學校可以采用影印、縮印或其他復制手段保存畢業設計(論文,可以公布其中的全部或部分內容。以上承諾的法律結果將完全由本人承擔!作者簽名: 年 月日摘要交通運輸業的發展無疑對國民經濟建設起到了積極的推動作用,但是號稱公路隱形殺手的營運車輛超載現象屢禁不止,其危害是多方面的:加速損壞公路路面,增加公路養護成本;使國家稅費大量流失;造成

3、交通事故頻繁發生;嚴重的環境污染;加速車輛的損壞。因此加強公路運輸的管理、保障行車安全等問題也顯得日趨重要。車輛動態稱重,即在非停車的運動狀態下的稱重,與停車狀態下的靜態稱重相比,其主要特點是節省時間,效率高,使得稱重時不至于造成對正常交通的干擾。汽車動態稱重是加強公路超限運輸、強制實施超限法規等管理現代化、科學化的技術條件。動態車輛稱重系統的研究對于保護公路的正常使用有著重要的經濟意義和社會價值。關鍵字:動態稱重稱重本體FPGA FIR 單片機ABSTRACTThe development of communication and transportation industry has un

4、doubtedly played an active role in the construction of national economy. However, the overloading of trucking vehicles, which is known as stealthy killers of the highway, remains incessant in despite of repeated prohibition. Harms created by overloading are of manifolds, accelerating road damage, in

5、creasing road maintenance cost, leading to substantial run off of taxation and toll fee, bringing about frequent occurrence of traffic accidents, seriously polluting the environment, speeding up vehicle wear-off etc. So that it becomes more and more important to reinforce control over road transport

6、ation. Dynamic weighing, i.e. weighing the vehicle on its moving state, with the characteristic of higher efficiency and time-saving, avoids the disturbance to the traffic in the weighing process, as compared with static weighing. Vehicle dynamic weighing is the technical precondition to the moderni

7、zed and scientific management of reinforcing overloading control and forcing overloading control regulations. And the study of dynamic weighing system is of economic significance and social value in assurance of appropriate use of the roads.KEY WORDS:dynamic weighing; Weighing noumenon; FPGA; FIR; s

8、ingle chip microprocessor目錄摘要 . I ABSTRACT . II 第1章前言 . (11.1選題背景及意義 (11.2動態稱重概述 (11.3動態車輛稱重系統國內外研究現狀 (21.4 幾種動態測試方式及系統 (3第2章硬件系統介紹 (52.1整體設計介紹 (52.2 FPGA概述 (62.3 放大濾波電路設計 (82.4 A/D采集電路設計 (112.5 顯示電路設計 (132.6 通訊電路設計 (14第3章軟件設計 (173.1 FPGA軟件設計 (173.2 FIR算法實現 (183.3 單片機軟件設計 (25第4章結論 (27第5章展望和不足 (28參考文

9、獻 (29致謝 (1第1章前言1.1選題背景及意義隨著經濟的發展和科技的進步,現代交通運輸業飛速發展。近幾年來我國對公路基礎設施特別是高速公路建設的力度逐年加大,全國公路建設完成投資日益增加。交通運輸業的發展無疑對國民經濟建設起到了積極的推動作用,但是號稱公路隱形殺手的營運車輛超載現象屢禁不止,其危害是多方面的1。主要表現在:加速損壞公路路面,增加公路養護成本;使國家稅費大量流失;造成交通事故頻繁發生;嚴重的環境污染;加速車輛的損壞等幾個方面。因此加強公路運輸的管理、保障行車安全等問題也顯得日趨重要。依據交通部對車輛軸類型及軸載質量的標準,我們準備對滿足我國管理規范要求的全自動車輛動態稱重超限

10、管理系統進行實驗性研究,為交通部門實施有效的超限管理提供了強有力的手段。鑒于國內車輛超載、超限的嚴重性,公路交通管理相關部門急于收集當前公路上行駛的車輛車型組成、軸載譜和超重程度、分析超重車輛對路面的損害影響程度,以便估算公路交通部門需為此增加的建設投資,并制定相應的管理措施和法規,為公路運營部門按車重收費提供有效技術手段。同時提高動態稱重的精度,提高稱重時車輛通過速度、降低稱重系統的成本仍是一個未能解決的問題,國內外一直都在探索一種全新型的動態稱重方案。如何設計出速度快、抗干擾能力強、準確度高的新型全自動汽車動態稱重超限管理系統,對交通部門有效地實施超限管理,保證行車安全、延長公路的使用壽命

11、、降低公路養護的成本、減少環境污染等方面有著顯著的社會效益和經濟效益。1.2動態稱重概述車輛動態稱重,即在非停車的運動狀態下的稱重。與停車狀態下的靜態稱重相比,其主要特點是節省時間,效率高,使得稱重時不至于造成對正常交通的干擾。這對公路建設與管理有著極為重要的意義,同時對車輛運輸現代化管理也有較大的促進作用。目前較為流行的是軸重稱量軸重儀,即分別測出車輛各軸的軸重量,再由測量系統計算出整車重量。在靜態稱重時,車輛的輪胎平穩地作用于軸重儀稱臺上,無任何其它外力干擾,能反映真實軸重。因此可以實現高精度測量。動態稱重時,車輛以一定速度通過軸重儀測量平臺,不僅輪胎對平臺的作用時間很短(在幾百毫秒以內,

12、而且作用在平臺上的力除真實軸重外,還有許多因素產生的干擾力,如:車速、車輛自身諧振、路面激勵、輪胎驅動力等。可以說真實軸重被淹沒在各種干擾力中,給動態稱重實現高精度測量造成很大困難。因此,在外界隨機不確定的干擾力作用下如何準確測量真實軸重,就成了動態軸重測試系統的技術難點和關鍵。就所存在的干擾進行整理、分析綜合,從動態測試系統的整體角度探討能減小或消除這些干擾力影響程度的措施和測試方式,無疑有助于高精度動態稱重技術的進步及測試系統的發展1。1.3動態車輛稱重系統國內外研究現狀在20世紀60年代末70年代初,國外開始研究高速公路動態車輛稱重系統以防止車輛超載對路面所造成的損壞,我國則起步較晚,開

13、始于80年代初期2。1974年,法國取得了一項壓電纜動態汽車稱重器Vibracoax的專利。1988年,英國研制出了性能優于Vibracoax的新型壓電稱重傳感器Vibetek5。1992年,由歐洲高速公路系統研究實驗室聯盟(FEHRI發起,按照歐盟運輸委員會(ECTD的程序框架進行了COST323計劃。該計劃主要內容就是研究對公路上行駛的汽車進行動態載荷監控的相關問題,其中最重要的是在瑞士進行為期30個月的WIM系統實際應用測試。1994年,歐盟開始進行WA VE(weighing in motion of axleand vehicles for Europe計劃即著名的CET(cold

14、environment test測試。結果表明德國PAT、美國Mikros等在測量性能方面處于領先水平。2000年ITS年會上展出由美國MSI公司開發的共聚物壓電軸傳感器,可以同時測量車速、車軸數、軸距及車型分類、動態稱重。為了規范世界上的動態稱重系統,1990年德克薩斯大學的學者起草了ASTME131890標準3。1目前,國外汽車動態稱重系統的研究以美國和德國水平較高,德國PAT公司生產的產品精度已達到±3%4。2我國高等級公路的發展較國外晚,但超載現象特別嚴重,尤其是礦產資源富有地區。我國于20世紀80年代出現了帶基坑和無基坑兩種電子汽車衡5,1994年一種動、靜態兩用電子軌道衡

15、6在太原鋼鐵公司通過了鑒定,該產品集動態和靜態軌道衡的優點子一身,較好地解決了檢測精度與汽車通過速度之間的矛盾。作為國家“八五”重點科技項目,交通部重慶公路科學研究所研制了一種固定式動態汽車稱重系統7,該系統軸重誤差小于±10%,置信度為95%。3汽車動態稱重技術在現實中的應用。發達國家在公路骨干網上普遍設立了車輛動態稱重檢測設備,對汽車超載現象實施嚴格管理。目前,國內還沒有一家企業能夠自主生產汽車動態稱重儀,其關鍵總成或配件依靠進口。本課題主要對動態車輛稱重系統進行深入的分析和研究以解決其關鍵問題。1.4 幾種動態測試方式及系統動態稱重時,車輛以一定速度通過軸重儀測量平臺,不僅輪胎

16、對平臺的作用時間很短(在幾百毫秒以內,而且作用在平臺上的力除真實軸重外,還有許多因素產生的干擾力,如:車速、車輛自身諧振、路面激勵、輪胎驅動力等??梢哉f真實軸重被淹沒在各種干擾力中,給動態稱重實現高精度測量造成很大困難。因此,在外界隨機不確定的干擾力作用下如何準確測量真實軸重,就成了動態軸重測試系統的技術難點和關鍵。就所存在的干擾進行整理、分析綜合,從動態測試系統的整體角度探討能減小或消除這些干擾力影響程度的措施和測試方式,無疑有助于高精度動態稱重技術的進步及測試系統的發展89。所謂算術平均,即對傳感器輸出信號進行多次快速數據采集,然后取算術平均值作為測試結果,以濾除隨機誤差。該測試系統基于高

17、速A/D轉換器與單片機數據采集處理功能。當車輪通過稱臺時,單片機在稱重時區段內通過高速A/D轉換器對傳感器輸出信號進行自動快速采集,并將多次采集的數據進行預處理和存儲,然后取算術平均,其結果認為是在動態下測試的軸重。從理論上來講,該系統應能保證一定的測量精度。但是,在實際操作中,會受到若干條件限制(如稱量時間較短、模數轉換不夠快,致使車輛通過速度上限與稱量精度相矛盾。而且,由于稱臺較短,稱重時間有限,所采集的數據不可能足夠的達到精確平均值,有相當的偏差。因此,依此測試方式研制的軸重儀比較適合于靜態稱重或低速準動態稱重(限速稱重。由于干擾因素的存在,使行駛車輛在某些固有頻率下震動。當車輛通過稱臺

18、時對稱臺的作用力波形將由兩部分組成,即與軸重成正比的靜態分量和由各種諧波成分組成的動態分量(如圖1-1所示。80年代,日本提出了一種位移積分法的測試方式,較好的解決了濾除動態分量干擾問題,大大提高了動態軸重稱量精度。其原理大致是:將稱重系統的輸出信號對一小段位移沿(L1其長度(L積分,L1的兩端是通過對稱的前后排傳感器的輸出進行比較給定的。圖1-1示出了稱重的典型波形,圖中陰影部分面積用于該測試方式中的計算,以得到接近于軸重的靜態分量,消除動態分量。動態分量在積分區間被比較理想的平均了,使車輛震蕩造成的干擾影響很小。由于積分是對前后排傳感器的輸出做出的比較后劃分的位移區段進行的,因此即使車輛在

19、較高車速下行使,仍能保證有較高的測試精度。但這需要大量的數據才能保證其精度,其實現起來比較麻煩,這也是目前動態稱重系統在提高汽車通過速度時,精度無法保證的關鍵所在。靜重負荷路長L L1t圖1-1 軸重的典型波形本文在參考了以上幾種方法以后,提出了一種FIR 數字濾波方法,這種方法具有濾波效果好濾波參數修改方便而且容易實現等優點。由于FIR 算法的運算量比較大,如果單純用單片機來實現很難做到實時處理,所以我們用FPGA 來實現FIR 算法,單片機用來做一些輔助工作。第2章硬件系統介紹2.1整體設計介紹由于傳感器輸出為毫伏級差動信號所以放大器必須為差動。在現場干擾比較嚴重,其中有傳感器本身的干擾,

20、其中共模干擾部分通過差動放大電路可以有效的消除,而串模干擾必須通過低通濾波消除,此時就得考慮濾波電容的大小。如果電容選擇的大一些可以有效的消除串模干擾,但是同時濾波電路的輸出信號會有一個比較大延遲,對汽車重量的實時測量來說這是不允許的。如果選用的電容比較小,雖然可以保證實時性但卻不能有效慮除干擾信號。所以電容大小的選擇必須折中考慮。雖然有一部分干擾信號不能慮除但是可以通過軟件濾波實現,比如可以通過平均值方法或者用自適應方法,這就需要CPU有足夠的速度來保證計算的實時性,但是這種CPU往往價格比較高昂,所以仍然選用通用微處理器89C51。為了保證信號處理的實時性,我們用硬件完成濾波算法。本設計選

21、用Altera公司的FLEX10K10器件,它具有速度快操作簡單等特點。我們用FPGA器件實現數字濾波FIR算法。同時FLEX10K10器件還擔任著一些簡單邏輯電路設計的任務。其中處理完的數據通過單片機的串口傳送到上位機,并且這個串口還用于數碼管的顯示,而串口切換是由FPGA完成的。 圖2-1設計整體框圖由于本文選用的A/D1674芯片轉換時間只有10s,而所設計的電路是每隔20s 啟動轉換一次,所以有足夠的時間完成模數轉換。汽車軸重臺的寬度為40cm,汽車通過軸重臺的最大速度為15km/h,這樣可以求出汽車通過的最短時間為0.096s。在這段時間里可以采集4800個數據。由于前30ms是傳感

22、器的反應時間,除去這部分數據,將剩下的數據進行FIR數字濾波后,噪聲被有效的抑制。為了進一步的平滑波形,每8個數據做一次平均,這樣就消弱了由于汽車高速通過軸重臺時由于顛簸產生的尖峰信號。FPGA的每次濾波包含有FIR運算和8個數據的平均值運算。FPGA每完成一次濾波就會向單片機發一個中斷請求,此時單片機讀取濾波后的數據。由于選用的A/D是12位,而單片機89C51是8位的,所以經過處理后的數據必須分兩次讀入。第一次讀入低八位,第二次讀入高4位,然后對數據處理。此時可以認為單片機接收的數據為濾波后不含有噪聲的數據,只要求出此時的最大值就是汽車的真實重量。2.2 FPGA概述FLEX10K主要由嵌

23、入式陣列塊、邏輯陣列塊、FastTrack和I/O單元四部分組成。1.嵌入式陣列嵌入式陣列是由一系列的EAB(嵌入式陣列塊構成的。當要實現有關存貯器功能時,每個EAB提供2048位用來構造RAM、ROM、FIFO或雙口RAM等功能。當EAB 用來實現乘法器、微控制器、狀態機以及DSP等復雜邏輯時,每個EAB可以貢獻100到600個門。EAB可以單獨使用,也可以組合起來使用。2.邏輯陣列邏輯陣列是由一系列的邏輯陣列塊(LAB構成的。每個LAB包含8個LE和一些連接線,每個LE含有一個4輸入查找表(LUT、一個可編程觸發器、進位鏈和級聯鏈, LE的結構能有效地實現各種邏輯。每個LAB是一個獨立的結

24、構,它具有共同的輸入互連與控制信號,LAB的這種“粗粒度”結構有利于器件布線和高性能的實現,例如8位計數器、地址譯碼器或狀態機。多個LAB組合起來也可以構成更大的邏輯塊,每個LAB代表大約96個可用邏輯門。3.快速通道(FastTrackFLEX10K器件內部信號的互連和器件引腳之間的信號互連是由快速通道(FastTrack連線提供的,它是貫通器件長、寬的快速連續通道。4.I/O單元I/O單元(IOE列連線帶行連線帶邏輯陣列嵌入式陣列局部連線邏輯單元(LE邏輯陣列塊(LAB邏輯陣列嵌入式陣列塊(EAB圖2-2 FLEX10K器件的結構方框圖FLEX10K器件的I/O引腳是由一些I/O單元(IO

25、E驅動的。IOE位于快速通道的行和列的末端,每個IOE有一個雙向I/O緩沖器和一個既可做輸入寄存器也可做輸出寄存器的觸發器。當IOE作為專用時鐘引腳時,這些寄存器提供了特殊的性能。當它作為輸入時,可提供4.2ns的建立時間和0 ns的保持時間;而作為輸出時,這些寄存器可提供少于5.7ns的“時鐘到輸出”的延時時間。IOE具有許多特性,如JTAG編程支持、擺串控制、三態緩沖和漏極開路輸出。圖3-3是FLEX10K結構的方框圖。由圖可以看出,一組LE組成了一個LAB,LAB是排列成行和列的,每一行也包含一個EAB。LAB和EAB是由快速通道連接的,IOE處于快速通道連線的行和列的兩端。FLEX10

26、K器件還提供了6個專用輸入引腳,這些引腳用來驅動觸發器的控制端,以確??刂菩盘柛咚?、低偏移(1.2ns地有效分配。這些信號使用了專用的布線支路,以便具有比快速通道更短的延遲和更小的偏移。專用輸入中的4個輸入引腳可用來驅動全局信號,這4個全局信號也能由內部邏輯驅動,它為時鐘分配或產生用以清除器件內部多個寄存器的異步清除信號提供了一個理想的方法。當電路設計者利用MAX+PLUS軟件工具將電路輸入,并且經過編譯、優化、仿真,從波形上看已經完全達到最初的要求以后,就應當考慮CPLD器件的系統配置與下載方法了。 圖2-3 FPGA 下載電路CPLD器件的工作狀態分為三種:一種稱之為用戶狀態(Usermo

27、de,指電路中CPLD器件正常工作時的狀態;一種則是配置狀態(Configuration,指將編程數據裝入CPLD器件的過程,也可稱之為構造;第三種就是初始化狀態(Initialization,CPLD器件復位各類寄存器。讓I/O引腳為邏輯器件正常工作作準備。【8】【9】一、配置方式 圖2-4 FLEX10K器件的工作狀態CPLD器件配置分為兩大類:主動配置方式和被動配置方式。主動配置由CPLD 器件引導配置操作過程,它控制著外部存貯器和初始化過程;而被動配置由部計算機或控制器控制配置過程。根據數據線的多少將CPLD器件配置分為并行配置和串行配置兩類。在FLEX10K10器件正常工作時,它的配

28、置數據貯存在SRAM之中。由于SRAM 的易失性,所以每次加電期間,配置數據都必須重新構造,將I/O引腳和寄存器初始化之后便進入了用戶狀態,其各種工作狀態如圖2-4所示。二、串口下載電纜ByteBlaster原理我們知道,使用FLEX器件的一個特別突出的優點就是:FLEX器件可以通過在線配置的手段來調整電路結構、延時信息等,這給電路設計人員調試電路帶來極大的方便。而并口下載電纜ByteBlaster正是將PC機中的配置信息傳送到PCB板FLEX器件中必不可少的器件。ByteBlaster不但可以用來對FLEX系列器件進行配置重構,而且可以用來對MAX 9000以及MAX 7000S/MAX 7

29、000A等器件進行編程。ByteBlaster 有兩種配置模式:被動串行模式(PS一常用來配置重構FLEX10K、FLEX 8000和FLFX 6000系列器件、邊界掃描模式(JTAG一具有邊界掃描電路的配置重構或在線編程。三、ByteBlaster的連接及原理ByteBlaster下載電纜具有以下幾部分:與PC機并口相連的25針插座頭;與PCB 板插座相連的10針插頭;25針到10針的變換電路。1.ByteBlaster 25針插頭。ByteBlaster與PC機并口相連的是一個25針的插頭,在PS和JTAG兩種模式下具有不同的名稱,如表3-2所示。2.ByteBlasterl0針插頭Byt

30、eBlaster的10針插頭是與PCB板上的10針插座連接的。表3-3中列出了Byte Blaster在兩種不同模式下的各引腳名稱。2.3 放大濾波電路設計4233*2123321R R R R V Vo R R R R V V +-=+*- 23(1231243123(4R R Vo R V R R V R R V R R R +-=-+ 123(4241(323(1V R R R V R R R R R Vo R +-+=+當R1=R2 R3=R4時候,上式將變為113(3231(331(1V R R R V R R R R R Vo R +-+=+21(*13V V R R Vo -=

31、令R1=3K,R3=100K,則此放大電路的放大倍數為:-33.3倍。 圖2-5 第一級差動放大電路 圖2-6 第二級放大電路 圖2-7 整體放大電路131VR R Vo R Vi +-= Vi R VR R Vo 113+-= 令VR1=50K,R3=10K,R1=1K,根據此公式可以計算出第二級電路放大倍數為1060倍。同樣道理,第三級電路的放大倍數為120倍,所以總的放大倍數為33339960倍。利用運放作為有限增益可控源的二階低通濾波器,其傳遞函數為:【10】*343(2C C R R S C R R R C R C R S C C R R R R R S H +-+=與二階低通濾波器

32、標準式20220/(+=SQ S H S H相比較,得:3430R R R H +=212110C C R R =1-+=C R C R R R C R C R C R C R Q 圖2-8 有限增益低通濾波器對該電路來講,有R 1、R 2、C 1、C 2、H 0五個參數可選擇,但只有上述三個關系式,因而在元件選擇上有一定的自由度;一種方法是令R 1=R 2=R ,C 1=C 2=C ,則有RC 10= 3430R R R H += 031H Q -=故當0,Q 已知時候,有:01=RC ,QH 130-=,當R 3=、R 4=0時候有:H 0=1, (100010*1.0110HZ KU R

33、C = 圖2-9 二階濾波電路2.4 A/D 采集電路設計模擬信號經過放大隔離后要進行A/D 轉換變成數字量,計算機才能處理。ADC 的最主要性能指標就是分辨率和轉換時間,這兩條取決于測試設備的精度要求和信號變化速率。由于稱重臺范圍是03000公斤,而要求誤差為1公斤以下,所以滿足:1/212<1/3000<1/211 圖2-10 AD1674的工作時序由圖可見2-12,AD1674的工作狀態由CE 、CS 、R /C 、12/8、0A 五個控制信號決定,當CE=1,CS =0同時滿足時,才能處于工作狀態。當AD1674處于工作狀態時,R /C =0時啟動A/D 轉換;當R /C

34、=1時進行數據讀出。12/8和0A 端用來控制轉換字長和數據格式。0A =0時啟動轉換,則按完整的12位A/D 轉換方式工作,如果按0A =1啟動轉換,則按8位A/D 轉換方式工作。當AD1674處于數據讀出工作狀態(R /C =1時,0A 和 12/8成為輸出數據格式控制端。12/8=1,對應12位并行輸出;12/8=0,則對應8位雙字節輸出。其中0A =0時輸出高8位,0A =1時輸出低4位,并以4個0補足尾隨的低4位。必須指出12/8端與TTL 電平不兼容,故只能用硬布線接至+5V 或0V 上。另外0A 在數據輸出期間不能變化。表2-1為AD1674邏輯控制真值表。表2-1 AD1674

35、邏輯控制真值表 根據以上分析得到AD1674與FPGA的接口電路如圖3-13所示。 圖2-11 A/D轉換電路AD574A圖中AD1674的數據總線與FPGA的I/O口直接相連,12/8端接5V,按12位并行輸出采集數據,A、CE、CS、R/C端接到FPGA的I/O口,來控制AD啟動和讀數據。轉換結束信號也接到FPGA的一個I/O口,按中斷方式確定其是否轉換結束。2.5 顯示電路設計在單片機系統中,通常用LED數碼顯示器來顯示各種數字或符號。由于它具有顯示清晰、亮度高、使用電壓低、壽命長的特點,因此使用非常廣泛。下面讓我們來看電路圖2-14,4片74LS164首尾相串,而時鐘端則接在一起,這樣

36、,當輸入8個脈沖時,從單片機RXD端輸出的數據就進入到了第一片74LS164中了,而當第二個8個脈沖到來后,這個數據就進入了第二片74LS164,而新的數據則進入了第一片74LS164,這樣,當第四個8個脈沖完成后,首次送出的數據被送到了最左面的74LS164中,其他數據依次出現在第一、二、三片74LS164中。 圖2-12 顯示電路圖74LS164的實際連線不同則LED的翻譯碼也不同,實際電路中所使用的譯碼方式如表3-5所示。表2-2 顯示譯碼表 2.6 通訊電路設計在汽車重量測試系統中,要求能夠把測試的數據送到上位機,同時接受上位機的控制命令以便計算機聯網組成全自動汽車檢測線。這就需要上位

37、微機系統與單片機系統之間進行數據通訊。在MCS-51單片機中有一個異步通信串行接口,能方便的構成雙機、多機及PC機串行通信接口。MCS-51的串行口主要有二個物理上獨立的串行數據緩沖器SBUF、發送控制器、接收控制器、輸入移位寄存器和輸出控制門組成。發送數據緩沖器SBUF只能寫入不能讀出,接收數據緩沖器只能讀出,不能寫入,二個緩沖器共用一個地址99H。有二個特殊功能寄存器SCON和PCON可用來控制串行口的工作方式及波特率。波特率發生器可用定時器T1或T2構成。本系統中要實現單片機與上位PC兼容機的數據通信。在PC兼容機系統中,利用異步通信適配器可實現異步串行通信。該適配器以INS8250通信

38、芯片為核心,配以可進行電平轉換的發送器和接收器電路及一些控制邏輯電路,將其做成接口卡的形式,其端口地址范圍為3F8H3FFH。利用此異步通信適配器,可以很方便地完成PC兼容機與MCS-51單片機的數據通信。PC兼容機與MCS-51單片機最簡單的連接是零調制三線經濟型連接,這是全雙工通信所必須的最少數目的線路。MCS-51單片機輸入、輸出電平為TTL 電平,而PC兼容機配置的是RS-232標準串行接口,二者的電氣規范不一致,因此要完成PC兼容機與單片機的數據通信,必須進行電平轉換。以前大多數單片機系統的RS-232轉換接口都采用MC1488和MC1489構成,它需要±12V和±

39、;5V電源供電,而且由兩片芯片構成一個RS-232接口,電路相對比較復雜。本系統采用一種新型的單電源RS-232發送/接收器,使電路復雜性大為降低,這就是INTERSIL公司的ICL232芯片。INTERSIL公司的ICL232是單片集成雙RS-232發送/接收器,采用單一+5V電源供電,外接至多四只電容,二只電阻便可以構成標準的RS-232通信接口,該器件完全符合EIA RS-232標準,性能更為可靠。ICL232的功能框圖見圖3-15所示。由圖3-15可見,ICL232的主要組成部分為:一個電荷泵部分,一個雙重發送部分和一個雙重接收部分。電荷泵部分由二只電荷泵組成,用以實現升壓和電壓極性轉

40、換功能。C1、C2電容值的大小影響輸出阻抗,增大電容值可降低輸出阻抗。另外,增加接在V+和V-端的電容C3、C4的值有助于降低V+和V-端電源方波影響。其接收部分的驅動輸出電壓在±8V左右,接收時,輸入超過2.4V則輸出為低,輸入在+0.830V之間則為高。 圖2-13 ICL232結構框圖由ICL232構成的PC兼容機與MCS-51單片機之間的通信接口電路如圖2-14所示。由圖可見,由ICL232構成的通信接口電路簡單,工作可靠。 圖2-14 ICL232功能框圖第3章軟件設計3.1 FPGA軟件設計通常設計過程可劃分為下述的六個步驟11:設計要求的定義:在從事設計進行編寫代碼工作

41、之前,必須先對你的設計目的和要求有一個明確的認識。對所需的信號建立時間、時鐘輸出時間、最大系統工作頻率、關鍵的路徑等這些要求,只要有一個明確的定義,這將有助于你的設計,然后再選擇適當的設計方式和相應的器件結構,進行設計的綜合。用VHDL語言進行設計描述:有了設計要求的定義后,你可以嘗試去編寫設計代碼。但是,我們建議首先應決定設計方式。只有對如何描述你的設計有了一個最佳的認識,才能更為有效的使你編寫設計代碼,然后再通過綜合,進行所需要的邏輯實現。通常的設計方式有三種:自頂向下設計、自底向上設計、平坦式設計。前兩種方式包括設計階層的生成,而后一種是將描述的電路當作單模塊來進行的。決定了設計方式以后

42、,根據具體的語法和語義結構,你可以參照你已設定的功能塊、數據流狀態圖等,來進行設計代碼的編寫。編寫一個優化的代碼的關鍵在于要依照硬件的內在要求去思考,特別是,要能向綜合軟件運行時的思考方式那樣去體驗如何實現你的設計。原代碼模擬:對于大型設計,采用語言模擬器進行設計的原代碼模擬可以節省時間。并行工作程序導致電路模擬提前至設計的早期階段。采用原代碼模擬,可以在設計的早期階段檢測到設計中的錯誤,從而進行修正,以便盡可能的減少對設計日程計劃的影響。但對于小型設計,則往往不需要先做原代碼模擬,即使做了,意義并不大。因為對于大型設計,其綜合、布局、布線往往要花費好幾個小時,在綜合之前進行原代碼模擬,就可以

43、大大減少設計重復和修正錯誤的次數和時間。當然,大型設計往往是階層結構的序列子設計和模塊的組合。設計綜合:設計優化和設計布局布線:綜合是把設計描述轉換到網表或方程生成的過程。這個過程也可以被解釋為設計描述作為輸入,而設計網表和邏輯方程作為輸出。優化處理依賴于三個因素:布爾表達方式,有效資源類型,以及自動的或用戶定義的綜合指引。裝配是指把通過綜合和優化過程所得到的邏輯,安放到一個邏輯器件之中的過程。布局布線工具的好壞對于FPGA設計的性能有著很大的影響。傳導延時基本上取決于布線延時,一個優化的布局布線可將電路的關鍵部分緊密的配置在一起,以消除布線延時。布局布線工具采用一定的算法,指引用戶約束和性能

44、估價來選擇最佳的布局方式,以逐步實現符合性能要求的優化的布局結果。布局、布線后的設計模塊模擬:即使你在設計綜合之前進行了設計模擬,在設計被裝配之后,還是需要對設計在進行模擬。布局后的模擬不僅可使您能夠再一次檢測設計的功能,而且還能檢查的時序功能,諸如信號建立時間、時鐘到輸出、寄存器到寄存器的時延。如果實驗模擬結果不能滿足設計的要求,就需要重新綜合并將設計重新裝配于新的器件之中,其間不乏反復嘗試各種綜合過程和裝配過程,或選擇不同速度的器件。同時,也可以重新觀察和分析VHDL 原代碼,以確認描述使正確有效的。只有這樣,取得的綜合和裝配的結果才會符合你的設計要求。器件編程:在成功地完成設計描述、綜合

45、、優化、裝配和設計模擬之后,則可以對器件進行編程和繼續進行系統設計的其他工作。綜合、優化和裝配軟件將生成一個器件編程所用的數據文件。3.2 FIR 算法實現FIR 濾波器的h(n 0nN -1H(z=-=-1N 0n n z n (h (4-1據此找不到模擬系統函數H(s。(因為是1-z 的多項式,而非有理分式形式FIR 濾波器頻率響應為:【3】【4】H(j e=-=-1(N n n j e n h =(j e H (j e (4-2nN -1 (奇對稱稱為第二類(n h (4-6 本文采用FIR 數字濾波,它是由卷積原理實現,如公式4-13所示。Y(n=-=-1N 0k k n (x k (

46、h (4-13其中h(k為系統濾波參數而x(n為采集的信號,Y(n為濾波后的輸出信號。由公式4-1和公式4-5可知,可以把FIR 濾波器設計成具有線性相位。利用這一情況,可以得到乘法次數少的結構。圖4-12畫出了這種結構,可直接證明它是式4-1的結構,這個結構需要(N+1/2次乘法,只是級聯或并聯結構所需次數的一半,因此實際應用中多數使用這種方法。FIR 算法是本文的核心算法,在用VHDL 語言實現的過程中需要用到乘法運算和移位卷積運算,本文把主要程序列出,并對程序做了注釋和說明。 h(m圖3-1 FIR算法實現結構圖ROM程序:library ieee;package rom is 定義的包

47、體subtype lw_int is integer range 0 to 255;聲明范圍為0-255整型數的子類型function rom(l:lw_intreturn unsigned;定義一個rom函數end rom;packag e body rom is 包體說明function rom(l:lw_intreturn unsigned isalias in1:lw_int is l; 聲明函數的參數為lw_int類型variable v_in1:unsigned(7 downto 0; 定義一個無符號數組begincase in1 iswhen 0=>v_in1:="

48、;00000001" 以下為FIR運算中使用when 1=>v_in1:="00000001" 的h(n參數when 2=>v_in1:="00000001"when 3=>v_in1:="00000001"when 4=>v_in1:="00000001"when 5=>v_in1:="00000001"when 6=>v_in1:="00000001"when 7=>v_in1:="00000001"

49、when 8=>v_in1:="00000001"when 9=>v_in1:="00000001"when 10=>v_in1:="00000001"when 11=>v_in1:="00000001"when 12=>v_in1:="00000001"when 13=>v_in1:="00000001"when 14=>v_in1:="00000001"when 15=>v_in1:="0000

50、0001"when 16=>v_in1:="00000001"when others=>null;end case;return(v_in1;end;end rom;程序功能說明:當進行卷積運算時候需要知道沖擊響應h(n的數值,在本設計中可以直接調用函數rom(,即:h(0=rom(0,h(5=rom(5等。當計算好h(n的數值后,就可以修改此程序的數組列表。在其他程序調用本程序之前必須對其進行編譯。程序mul_fun.vhd清單:library ieee;package mul_fun is 程序包說明function mul(l:unsigned(

51、11 downto 0;r:unsigned(7 downto 0return unsigned;end mul_fun ;package body mul_fun is 包體說明,描述程序包function mul(l,r:unsignedreturn unsigned is函數變量類型及返回值說明alias in1:unsigned(11 downto 0 is l;alias in2:unsigned(7 downto 0 is r;variable v_left,v_add:unsigned(19 downto 0;v_left為移位寄存器,v_add 為累加值variable v_i

52、n1:unsigned(11 downto 0;variable v_in2:unsigned(7 downto 0;beginv_left(7 downto 0:=in2(7 downto 0;v_left(19 downto 8:="000000000000"v_add:=(others=>'0'v_in1:=in1;v_in2:=in2;for i in 0 to 11 loop 如果當前位為1,則將移位寄存器中內容加到累加和寄存器中if v_in1(i='1' thenv_add:=v_add+v_left;end if;v_l

53、eft:=(others=>'0'case i is 根據i的數值不同對移位寄存器中內容移位when 0=>v_left(8 downto 1:=v_in2(7 downto 0;when 1=>v_left(9 downto 2:=v_in2(7 downto 0;when 2=>v_left(10 downto 3:=v_in2(7 downto 0;when 3=>v_left(11 downto 4:=v_in2(7 downto 0;when 4=>v_left(12 downto 5:=v_in2(7 downto 0;when

54、5=>v_left(13 downto 6:=v_in2(7 downto 0;when 6=>v_left(14 downto 7:=v_in2(7 downto 0;when 7=>v_left(15 downto 8:=v_in2(7 downto 0;when 8=>v_left(16 downto 9:=v_in2(7 downto 0;when 9=>v_left(17 downto 10:=v_in2(7 downto 0;when 10=>v_left(18 downto 11:=v_in2(7 downto 0;when 11=>v_

55、left(19 downto 12:=v_in2(7 downto 0;when others=>null;end case;end loop;return(v_add;end;end mul_fun ;程序說明:由于在FIR計算中需要用到乘法,而在VHDL語言中沒有提供乘法函數,所以我們用移位相加的辦法來實現乘法。在本設計中使用的A/D轉換器為12位,而卷積運算中h(n的參數我們用8位二進制表示,所以需要用到12位二進制與8位二進制的乘法,以上程序就是完成此項功能的子函數。它本身不能完成仿真功能,只能由其他程序調用此函數來完成。程序mul_ok.vhd清單:library ieee;e

56、ntity mul_ok isport(cp :in std_logic; 定義時鐘信號in1:in unsigned(11 downto 0; 定義輸入信號in2:in unsigned(7 downto 0; 定義輸入信號out1:out unsigned(19 downto 0 定義輸出信號;end mul_ok;architecture lw of mul_ok isbeginprocess(cpbeginif cp'event and cp='1' thenout1<=mul(in1,in2; 輸入信號相乘結果給輸出信號elsenull;end if;e

57、nd process;end lw;程序說明:在本程序中我們調用了先前編好的程序mul_fun.vhd中的函數mul(,為了使運算同步我們引入了時鐘信號。當在時鐘上升沿到來的時候執行乘法運算。具體仿真結果如圖所示。16進制乘法:fff×00=0,fff×ff=fef01,fff×02=1ffe??梢娊Y果正確。 圖3-2 乘法仿真結果library ieee;entity fir_lw is 實體說明port(cp,reset:in std_logic; 時鐘信號和復位信號sample: in unsigned(11 downto 0; 采樣信號result: out unsigned(19 downto 0 計算的結果;end fir_lw ;architecture beh of fir_lw is 對實體的描述beginfir_main:process(cptype shift_arr is array(16 downto 0 of unsigned (11 downto 0;定義子類型vari

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論