




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、 . EDA課程設計題目:基于VHDL的串口設計院系:機電學院班級:電氣103 :明軍 學號:日期:2012.12.102012.12.17目錄 1、任務要求1、1課題要求1、2設計目標2、系統(tǒng)設計2、1層次模塊劃分 2、2 分頻模塊的設計 2、3發(fā)送電路的波特率發(fā)生器的設計 2、4 接受模塊的設計 2、5 接收電路的波特率發(fā)生器和采樣時鐘的設計3、 VHDL的描述思路4、 總體電路的描述5、 系統(tǒng)仿真驗證 5、1 發(fā)送電路的波特率發(fā)生器的VHDL的仿真 5、2發(fā)送模塊VHDL的仿真 5、3 特率發(fā)生器和采樣時鐘的設計的VHDL仿真 5、4接受模塊的描述的VHDL仿真 5、5 綜合仿真6、 結(jié)
2、果與分析 6.1實現(xiàn)功能說明 6.2器件資源分析 6.3故障和問題分析7、總結(jié)體會8、參考文獻9、附錄15 / 17基于VHDL的串口設計任務書摘要:實驗設計了基于VHDL描述的RS232串口通信控制器,通過串口調(diào)試工具實現(xiàn)CPLD向單片機的數(shù)據(jù)發(fā)送和單片機的數(shù)據(jù)接收。完成的功能為實現(xiàn)收發(fā)一幀10個bit、波特率為4800的串口通信控制器。實驗的重心放在了RS232串口通信控制器發(fā)送模塊和接收模塊的設計,采用了自頂向下的思路進行設計。報告中給出了完整的設計思路和過程,并將系統(tǒng)分模塊進行了詳細的設計,給出了VHDL語言描述。完成了核心模塊以與系統(tǒng)整體的仿真驗證。最終下載到實驗板上測試通過。1、
3、任務要求1、1課題要求(1)用RS232實現(xiàn)與單片機之間的數(shù)據(jù)通信,單片機上用串口工具接收;(2)CPLD每1秒鐘發(fā)送1個字節(jié)的數(shù)據(jù)到單片機;(3)所發(fā)送的數(shù)據(jù)用實驗箱上的8個開關輸入;(4)設置發(fā)送允許控制;(5)數(shù)據(jù)格式:1位起始位、8位數(shù)據(jù)位、1位停止位;(6)數(shù)據(jù)傳輸速率:4800波特。1、2設計目標根據(jù)課題要求,實驗中將目標進行了細化,敘述如下:設定數(shù)據(jù)幀格式為10bit,其中第一位為起始位,定位低電平,8位數(shù)據(jù)位,1位結(jié)無數(shù)據(jù)傳輸時為高電平;2、 系統(tǒng)設計2、1層次模塊劃分系統(tǒng)劃分為二層,自頂向下分別是頂層模塊、控制器子模塊。頂層描述了整個系統(tǒng)的功能和運行;控制器子模塊實現(xiàn)系統(tǒng)中各
4、個獨立而完整的功能部分。每個層次可用一個或多個具體模塊加以實現(xiàn)。頂層模塊:作用為集成子模塊功能,控制子模塊的連接和耦合信號。由各子模塊定義成的庫元件組成。中層模塊:具體實現(xiàn)頂層模塊的描述,包括的功能主要是串行發(fā)送電路的波特率發(fā)生器,發(fā)送模塊和接收模塊地區(qū)、接受模塊的分頻部分和驗收。 發(fā)送電路的波特率發(fā)生器,將16KHz的時鐘分頻為4800Hz的時鐘。輸入:16KHz晶振信號。輸出:送往發(fā)送模塊的4800Hz的信號。發(fā)送模塊。向PC機發(fā)送信號。輸入:4800Hz時鐘信號、發(fā)送數(shù)據(jù)。輸出:輸入數(shù)據(jù)的串行輸出。接收電路的波特率發(fā)生器和采樣時鐘的設計,提高接收的準確性,減少誤碼率 輸入:16KHz晶振
5、信號。 輸出:送往接受模塊的信號和檢驗模塊。接收模塊,檢測接收端,若檢測到低電平則開始接收數(shù)據(jù)輸入:CPLD發(fā)送的數(shù)據(jù)。輸出:接收到的數(shù)據(jù)。以上模塊分別生成符號文件,最后在頂層模塊中進行連接。2、2 分頻模塊的設計由于UART是異步傳輸,沒有傳輸同步時鐘。為了能保證數(shù)據(jù)傳輸?shù)恼_性,UART采用16倍數(shù)據(jù)波特率的時鐘進行采樣。每個數(shù)據(jù)有16個時鐘采樣,取中間的采樣值,以保證采樣不會滑碼或誤碼。一般UART一幀的數(shù)據(jù)位數(shù)為8,這樣即使每個數(shù)據(jù)有一個時鐘的誤差,接收端也能正確地采樣到數(shù)據(jù)。這里采用常用的數(shù)據(jù)波特率為9600bps,則所需時鐘的頻率為16*9600。系統(tǒng)時鐘為50MHz,則分頻系數(shù)為
6、50000000/(16*9600) =325.52,取整為325。分頻器實現(xiàn)相對簡單,這里對其設計流程圖不做詳細介紹。只是將設計過程和結(jié)果簡述如下:首先用VHDL語言進行設計輸入,并生成模塊文件如圖2-1所示,其中clk為50M系統(tǒng)時鐘輸入,clkout為325分頻后時鐘輸出。圖2-1 分頻模塊 然后建立波形文件,對以上模塊進行時序仿真,仿真結(jié)果如圖2-2所示,方正結(jié)果說明,分頻輸出實現(xiàn)了對輸入的325分頻,分頻模塊設計正確。圖2-2 分頻模塊仿真結(jié)果2、3 發(fā)送電路的波特率發(fā)生器的設計 要產(chǎn)生4800波特率,要有一個不低于4800Hz的時鐘才可以。為產(chǎn)生高精度的時鐘, 我選了16KHz的晶
7、振來提供外部時鐘。當然,你也可以選其它頻率的時鐘來產(chǎn)生4800Hz的時鐘。對于16KHz 時鐘,需要設計一個13進制的分頻器來產(chǎn)生4800波特率的時鐘信號。發(fā)送過程:空閑狀態(tài),線路處于高電平;當受到發(fā)送數(shù)據(jù)指令后,拉低線路一個數(shù)據(jù)位的時間T,接著數(shù)據(jù)按地位到高位依次發(fā)送,數(shù)據(jù)發(fā)送完畢后,接著發(fā)送停止位(停止位為高電平),一幀數(shù)據(jù)發(fā)送結(jié)束。(1) 模塊流程圖根據(jù)以上發(fā)送過程,發(fā)送模塊算法示意圖設計如圖2-3所示。開始wrsig=1Nidle=0YN發(fā)送數(shù)據(jù)Y停止位N結(jié)束Y圖2-3 UART發(fā)送數(shù)據(jù)算法示意圖(2)生成模塊文件 新建一原理圖文件,將VHDL源文件生成對應的模塊文件如圖2-4所示,其
8、中clk為時鐘輸入,datain為需要發(fā)送的數(shù)據(jù)輸入,wrsig為發(fā)送命令輸入,idle為忙閑信號輸出,tx為串行數(shù)據(jù)輸出端。 圖2-4 UART發(fā)送模塊圖2-5 UART發(fā)送模塊仿真原理圖2、4 接受模塊的設計根據(jù)采用的幀格式,需要發(fā)送的數(shù)據(jù)為10 位(1位開始位、8 位數(shù)據(jù)位、1 位停止位) ,在發(fā)送完這10位后,就應該停止發(fā)送,并使發(fā)送端電平處于邏輯1 ,然后等候下次的發(fā)送.接收電路比發(fā)送電路要復雜的多,接收電路要時實檢測起始位的到來,一旦檢測到起始位到,就要將這一幀數(shù)據(jù)接收下來。串行接收電路首先要能判斷接收數(shù)據(jù)的到來,即每一幀的開始,然后對數(shù)據(jù)進行3 次采樣,最后判決輸出。為簡化設計,
9、幀格式仍然采用:1 位開始位+ 8 位數(shù)據(jù)位+ 1 位停止位。UART接收模塊的功能:時時檢測線路,當線路產(chǎn)生下降沿時,即認為線路有數(shù)據(jù)傳輸,啟動接收數(shù)據(jù)進程進行接收,按從低位到高位接收數(shù)據(jù)。(1) 模塊流程圖 根據(jù)以上描述的接收模塊的功能,可將接收模塊算法示意圖設計如圖2-6所示。開始rx=0Nidle=0YN接收數(shù)據(jù)Y停止位N結(jié)束Y圖2-6 接收模塊算法示意圖(2) 生成模塊文件 新建一原理圖文件,將VHDL源文件生成對應的模塊文件如圖4.10所示,其中clk為時鐘輸入,rx為需要串行數(shù)據(jù)輸入,dataout為并行輸出,rdsig為忙閑信號輸出。圖2-7 UART接收模塊(3)波形仿真新建
10、一個原理圖文件,加入各功能模塊,并添加輸入輸出端口,各個模塊的連接如圖2-8所示。圖2-8 UART接收模塊仿真原理圖 保存原理圖為uartrxts.bdf。編譯工程文件,編譯無誤后新建波形仿真文件,加入輸入輸出信號,設置系統(tǒng)時鐘clk為50MHz,保存為uartrxts.vwf,進行UART數(shù)據(jù)接收的波形仿真,波形仿真報告如圖2-9所示圖2-9 UART接收模塊仿真結(jié)果對上圖分析看出,UART接收模塊接收到的數(shù)據(jù)與UART發(fā)送模塊發(fā)送的數(shù)據(jù)相一至,每接收到一個數(shù)據(jù)都有一個讀取數(shù)據(jù)指示rdisg,UART接收模塊得到正確驗證2、5接收電路的波特率發(fā)生器和采樣時鐘的設計為提高接收的準確性,減少誤
11、碼率,每一位數(shù)據(jù)都用3 倍頻的波特率對數(shù)據(jù)進行采樣 ,然后對3 次采樣結(jié)果進行判決:如果3 次采樣中至少有2 次為高電平,則接收這一位數(shù)據(jù)被判決為高電平,否者,為低電平。為完成3 次采樣,除了頻率為9600Hz 的接收時鐘外,還要有一個3 倍頻的采樣時鐘3 VHDL描述思路第二部分“系統(tǒng)設計”中對系統(tǒng)的功能和邏輯結(jié)構(gòu)、以與模塊劃分都有了詳細的敘述,模塊間的耦合和信號的傳遞關系已經(jīng)清晰。可以使用VHDL語言描述硬件電路了。發(fā)送模塊和接收模塊的VHDL語言描述按照事先的設計進行編寫可以使電路思想明晰化,避免編程過程中用軟件的思維去描述硬件的電路系統(tǒng),也可有效避免錯誤。由于進行了細致的模塊劃分,模塊
12、的間的耦合程度降到了很低,這就使得電路設計的可靠性大為增強,只要模塊的輸出滿足了功能定義,整個系統(tǒng)就能正常工作,即便個別模塊出現(xiàn)問題,也不會過多影響到其他模塊。實際測試過程中也印證了這一點。4 總體電路的描述 頂層符號文件描述如下:5 系統(tǒng)仿真驗證系統(tǒng)仿真分為兩個步驟進行,首先是關鍵模塊的仿真,驗證子系統(tǒng)功能的正確性,然后是綜合仿真,驗證整個系統(tǒng)的功能。5、1 發(fā)送電路的波特率發(fā)生器的VHDL的仿真5、2發(fā)送模塊VHDL的仿真5、3 特率發(fā)生器和采樣時鐘的設計的VHDL仿真5、4接受模塊的描述的VHDL仿真5、5 綜合仿真6、結(jié)果與分析 6.1實現(xiàn)功能說明本實驗完成的RS232串口通信控制器,
13、完成了課題要求的所有功能。由于頂層設計采用了子系統(tǒng)分模塊描述的方法,使得控制器具有很好的擴展性。可以在不改變系統(tǒng)框架和模塊間電路連接關系,增加其他模塊,實現(xiàn)其他功能。本課題中并沒有在數(shù)據(jù)幀中加入校驗位,僅僅實現(xiàn)了1位起始位,1位停止位和8位數(shù)據(jù)位的傳輸。初步實現(xiàn)了單片機和CPLD之間的通信。數(shù)字系統(tǒng)的設計,真正的重點在于把系統(tǒng)層面的設計做好,系統(tǒng)架構(gòu)清晰,層次明確,穩(wěn)定性好,可擴展和可移植性好,這樣的系統(tǒng)給到用戶,只要添加用戶模塊或者稍作修改即可完成非特定的功能。6.2器件資源分析在設計階段,對系統(tǒng)描述采用過多種方式,嘗試了多種描述,代碼的長度在增加,模塊在增多,但系統(tǒng)穩(wěn)定性和可擴展性也在增強
14、,層次結(jié)構(gòu)和模塊設計也更加完善。設計之初對資源使用沒有多少概念,時常以軟件的思想描述硬件,在描述中使用乘法等資源耗費嚴重的操作,也曾使用過嵌套多層的IF-ELSE語句,產(chǎn)生很長的選擇器,降低了模塊的可靠性,增加處理延時。隨著設計的深入,加上反復求精的過程磨練,逐步對硬件描述綜合出的實際電路形式有了更多的理解,對延時和資源占用有了初步概念。一個顯見的結(jié)論是描述代碼的長度和綜合后的電路形式與資源占用無必然聯(lián)系。需要關注編譯器在綜合時如何將VHDL行為級描述轉(zhuǎn)化為結(jié)構(gòu)化的門級電路,才能分析清楚資源占用率和電路結(jié)構(gòu)。行為級描述可能與實際綜合的電路產(chǎn)生不一致,需要謹慎對待。6.3故障和問題分析實驗中由于
15、詳細劃分了子模塊、各模塊的實現(xiàn)都仔細進行了描述,故沒有出現(xiàn)太多的故障。但是在最后將個子模塊進行綜合的時候出現(xiàn)了仿真結(jié)果不正確的現(xiàn)象,后經(jīng)過多次修改終于得到正確的結(jié)果。由于對VHDL語言的學習與理解還停留在低層次上,故在編譯時出現(xiàn)了很多錯誤,在查閱了諸多相關資料后對VHDL的語法基本熟悉,逐漸深入,從最初的模塊初步成型到最后全模塊化,自頂向下設計系統(tǒng),完成VHDL描述。最深的感受在于,開始時一心專注于代碼的編寫和語法的使用,忽視了系統(tǒng)設計,導致設計結(jié)果不令人滿意,后來逐步采用自頂向下的設計思路,先從邏輯上把系統(tǒng)的功能和子系統(tǒng)的劃分描述清楚,然后設計各個模塊的接口和定義,最后分別去描述底層各個模塊
16、的功能和實現(xiàn),清晰明了,一氣呵成。這也是系統(tǒng)沒有多少故障的主要原因。7、總結(jié)體會對這次設計的題目起初不是很了解,后來通過同學、老師的解答和上網(wǎng)搜尋對設計有了一定的了解,對課題的設計業(yè)采用了很多方法,有復雜的也有簡單的,最終決定采用這個方案,當然,在使用這個方案設計程序的時候也遇到了許多問題,有VHDL語言的語法問題也有硬件下載和仿真問題,后來都在同學和老師的幫助下解決了,解決問題的主要方法還是要加強對VHDL語言的學習和對硬件操作的學習,要注意只是與應用相結(jié)合。8、參考文獻1 EDA技術實驗開發(fā)系統(tǒng)實驗指導書,啟東計算機廠。2 CPLD/FPGA可編程邏輯器件實用教程,馬彧,王丹利,王麗英,機
17、械工業(yè),2010,7。3 .微機原理與接口技術(第二版),田輝,高等教育.20114.EDA技術實用教程VHDL版(第四版),科學附錄1發(fā)送電路的波特率發(fā)生器的VHDLLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clk_div IS PORT(clk : IN STD_LOGIC; clk_div13 : OUT STD_LOGIC); END clk_div; ARCHITECTURE rtl OF clk_div
18、IS SIGNAL count : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL clk_temp : STD_LOGIC; BEGIN PROCESS(clk) BEGIN IF (clk'event AND clk='1') THEN IF(count="00001101") THEN count <= (OTHERS =>'0'); clk_temp <=NOT clk_temp; ELSE count <= count +1; END IF ; END IF ; END PR
19、OCESS; clk_div13<= clk_temp; END rtl;附錄2發(fā)送模塊的VHDLlibrary ieee; use ieee.std_logic_1164.all; entity is port(clk,en:in std_logic; Send_data:in std_logic_vector(9 downto 0); serial:out std_logic); end ; architecture _arc of is begin process(clk) variable count:integer range 0 to 9 :=0; begin if en=&
20、#39;0' then count:=0; serial<='1' elsif rising_edge(clk) then if count=9 then serial<=Send_data(9); else serial<=Send_data(count); count:=count+1; end if; end if; end process; end _arc;附錄3 接收電路的波特率發(fā)生器和采樣時鐘設計的VHDLlibrary ieee; use ieee.std_logic_1164.all; entity count13 is port(c
21、lk,en:in std_logic; Clock1,Clock3:out std_logic); end count13; architecture count13_arc of count13 is begin process(clk,en) variable count:integer range 0 to 13 :=0; begin if en='0' then NUll; elsif (rising_edge(clk) then count:=count+1; if count=13 then Clock1<='1' count:=0; else
22、 Clock1<='0' end if; if (count=3 or count=6 or count=9 ) then Clock3<='1' else Clock3<='0' end if; end if; end process; end count13_arc;附錄4接受模塊的VHDLlibrary ieee; use ieee.std_logic_1164.all; entity _receive10 is port(,clr,clk1,clk3:in std_logic; Q:out std_logic_vector(0 to 9); Valid:out std_logic); end _receive10; architecture _receive10_arc of _receive10 is Signal Enable:std_logic :='1' Signal Hold:std_logic :='0' Signal N:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國慶外套活動策劃方案
- 商圈成立活動方案
- 員工感恩聚餐活動方案
- 國學少兒活動方案
- 國慶招聘活動方案
- 團委組織交友活動方案
- 周六親子班精彩活動方案
- 喜訊廚藝大賽活動方案
- 國學書展活動方案
- 國慶大型汽車活動方案
- 網(wǎng)絡游戲代理合同通用版范文(2篇)
- SH/T 1485.4-1995工業(yè)用二乙烯苯中特丁基鄰苯二酚含量的測定分光光度法
- GB/T 38807-2020超級奧氏體不銹鋼通用技術條件
- GB/T 27773-2011病媒生物密度控制水平蜚蠊
- 質(zhì)量風險識別項清單及防控措施
- 2022年石家莊交通投資發(fā)展集團有限責任公司招聘筆試試題及答案解析
- 中國華電集團公司信訪事項處理程序
- 特種設備制造內(nèi)審及管理評審資料匯編經(jīng)典版
- EDI超純水系統(tǒng)操作說明書
- 金屬監(jiān)督監(jiān)理實施細則
- 2022年鎮(zhèn)海中學提前招生模擬卷科學試卷
評論
0/150
提交評論