




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
崔延博
張凱
陰世琦RS232
接口數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議設(shè)計
并行數(shù)據(jù)轉(zhuǎn)發(fā)為RS232協(xié)議的串口數(shù)據(jù)
串口RS232根本協(xié)議概要系統(tǒng)框圖及模塊功能實現(xiàn)實現(xiàn)程序測試鼓勵的設(shè)計仿真結(jié)果綜合工具結(jié)果
串口RS232根本協(xié)議概要1.通信的種類并行傳輸式:一次的傳輸量為8個位〔1個字節(jié)〕。特點:傳輸率高,可靠性相對較差,適用于短距離通信。串行傳輸式:一次傳輸1個位。特點:可靠性高,傳輸率相對較低,適用于遠距離通信。
2.RS232簡介 RS-232全名是“數(shù)據(jù)終端設(shè)備〔DTE〕和數(shù)據(jù)通訊設(shè)備〔DCE〕之間串行二進制數(shù)據(jù)交換接口技術(shù)標準”,也被稱為標準串口,是最常用的一種串行通訊接口。RS232采用負邏輯電平,定義+5~+12V為低電平,-12~-5V為高電平。3.RS232協(xié)議介紹 在數(shù)據(jù)輸入過程中,數(shù)據(jù)1位1位地從外設(shè)進入接口的“接收移位寄器”,當“接收移位存放器”中已接收完1個字符的各個位后,數(shù)據(jù)就從“接收移位存放器”進入“數(shù)據(jù)輸入存放器”,CPU從“數(shù)據(jù)輸入存放器”中并行讀取接收到的字符。在數(shù)據(jù)輸出過程中,CPU把要輸出的字符并行送入“數(shù)據(jù)輸出存放器”,“數(shù)據(jù)輸出存放器”的內(nèi)容傳輸?shù)健鞍l(fā)送移位存放器”,然后由“發(fā)送移位存放器”移位,把數(shù)據(jù)1位1位地送到外設(shè)。完成上述”串<—>并”轉(zhuǎn)換功能的電路,通常稱為“通用異步收發(fā)器”。 為了為通信雙方提供何時開始收發(fā)和收發(fā)結(jié)束的標志,發(fā)收雙方要把所采用的起止式格式〔包括字符的數(shù)據(jù)位長度,停止位位數(shù),有無校驗位以及是奇校驗還是偶校驗等〕和數(shù)據(jù)傳輸速率作統(tǒng)一規(guī)定。起止式異步協(xié)議的特點是一個字符一個字符傳輸,并且傳送一個字符總是以起始位開始,以停止位結(jié)束,字符之間沒有固定的時間間隔要求。 本次設(shè)計采用的數(shù)據(jù)幀格式為:一位起始位,8位數(shù)據(jù)位,一位校驗位和一位停止位〔停止位可為一位、一位半或二位,本次設(shè)計選用一位停止位〕,停止位后面是不定長度的空閑位。其中停止位和空閑為高電平邏輯1;起始位為低電平,邏輯0。系統(tǒng)框圖及模塊功能實現(xiàn)
1.模塊端口說明
設(shè)計RS232接口數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議模塊,并且將8位并行數(shù)據(jù)轉(zhuǎn)發(fā)為RS232協(xié)議的串口數(shù)據(jù)發(fā)送出去。模塊具體要求如下:模塊名:modulers232;外部提供:clk信號,16MHz時鐘;外部信號:rdy數(shù)據(jù)準備好信號;當rdy由低電平變?yōu)楦唠娖讲⒊掷m(xù)一個時鐘長度,
數(shù)據(jù)開始轉(zhuǎn)換并且發(fā)送。外部信號:data[7:0],需要發(fā)送的8位并行數(shù)據(jù);外部控制:bps[1:0],波特率設(shè)置信號;00:4800bps,01:9600bps
10:19200bps,11:38400bps串行輸出信號:d_out,串行數(shù)據(jù)輸出口;外部控制:parity,奇偶校驗控制信號;0:奇校驗,1:偶校驗2.系統(tǒng)框圖波特率產(chǎn)生模塊校驗位產(chǎn)生模塊波特率選擇模塊數(shù)據(jù)幀的發(fā)送控制模塊clk(16MHz)rdyclk_3(38400Hz)clk_2(19200Hz)clk_1(9600Hz)clk_0(4800Hz)bps_clkparitydatap_bitdatadata_out波特率產(chǎn)生模塊reg[1:0]bps_mode;reg[7:0]count;regclk_3,clk_2,clk_1,clk_0;always@(posedgeclkorposedgerdy)//產(chǎn)生clk_3=38461.5≈38400Hzif(rdy==1)beginclk_3<=0;count<=0;bps_mode<=bps;endelseif(count==208)//16000000/38400=416.666,208.333*2=416.666begincount<=0;clk_3<=~clk_3;endelsecount<=count+1;計數(shù)器rdyclk_2(19200Hz)計數(shù)器clk_1(9600Hz)計數(shù)器clk_0(4800Hz)計數(shù)器rdyclk(16MHz)clk_3(38400Hz)rdyrdyalways@(posedgeclk_3orposedgerdy)//clk_2=19200Hzif(rdy==1)clk_2<=0;elseclk_2<=~clk_2;
always@(posedgeclk_2orposedgerdy)//clk_1=9600Hzif(rdy==1)clk_1<=0;elseclk_1<=~clk_1;
always@(posedgeclk_1orposedgerdy)//clk_0=4800Hzif(rdy==1)clk_0<=0;elseclk_0<=~clk_0;波特率產(chǎn)生模塊rdyrdy計數(shù)器rdyclk_2(19200Hz)計數(shù)器clk_1(9600Hz)計數(shù)器clk_0(4800Hz)計數(shù)器rdyclk(16MHz)clk_3(38400Hz)
譯碼電路clk_3clk_2clk_1clk_0bps_clkbps_mode鎖存器rdybpsregbps_clk;always@(bps_modeorclk_3orclk_2orclk_1orclk_0)//setupbpscase(bps_mode)2'b00:bps_clk=clk_0;2'b01:bps_clk=clk_1;2'b10:bps_clk=clk_2;2'b11:bps_clk=clk_3;default:bps_clk=1'bx;endcase波特率選擇模塊
regparity_mode;always@(posedgerdy)
parity_mode<=parity;wireeven_bit,odd_bit;assigneven_bit=^(data[7:0]);assignodd_bit=~even_bit;regp_bit;always@(parity_modeoreven_bitorodd_bit)case(parity_mode)1'b0:p_bit=odd_bit;1'b1:p_bit=even_bit;default:p_bit=1'bx;endcase鎖存器parityparity_mode校驗碼生成模塊even_bitodd_bitdata譯碼電路p_bitrdy校驗位產(chǎn)生模塊
reg[3:0]cnt;reg[10:0]send_data;regdata_out_enble,data_out;always@(negedgerdy)if(rdy==0)beginsend_data[10:0]<={1'b1,p_bit,data[7:0],1'b0};data_out_enble<=1;endalways@(posedgerdyorposedgebps_clk)if(rdy==1)cnt<=0;elseif(cnt==11)data_out_enble<=0;elsebegindata_out<=send_data[cnt];cnt<=cnt+1;endassignd_out=data_out_enble?data_out:1'bz;并行轉(zhuǎn)串行模塊bps_clkdata_out11位發(fā)送幀產(chǎn)生電路p_bitdataSend_datardyrdy數(shù)據(jù)幀的發(fā)送控制模塊系統(tǒng)框圖譯碼電路bps_clkbps_mode鎖存器rdybps鎖存器rdyparityparity_mode校驗碼生成模塊even_bitodd_bitdata譯碼電路p_bit并行轉(zhuǎn)串行模塊rdydata_out計數(shù)器rdy計數(shù)器rdyclk_2(19200Hz)clk_1(9600Hz)計數(shù)器rdyclk_0(4800Hz)計數(shù)器rdyclk(16MHz)clk_3(38400Hz)11位發(fā)送幀產(chǎn)生電路datardySend_data實現(xiàn)程序
modulers232(d_out,rdy,data,bps,parity,clk);outputd_out;inputrdy,parity,clk;input[7:0]data;input[1:0]bps;reg[1:0]bps_mode;reg[7:0]count;regclk_3,clk_2,clk_1,clk_0;always@(posedgeclkorposedgerdy)//posedgerdylatchedthebpsandgenerateclk_3=38461.5?38400Hzif(rdy==1)beginclk_3<=0;count<=0;bps_mode<=bps;endelseif(count==208)//208.333*2=416.666begincount<=0;clk_3<=~clk_3;endelsecount<=count+1;always@(posedgeclk_3orposedgerdy)//clk_2=19200Hzif(rdy==1)clk_2<=0;elseclk_2<=~clk_2;
always@(posedgeclk_2orposedgerdy)//clk_1=9600Hzif(rdy==1)clk_1<=0;elseclk_1<=~clk_1;
always@(posedgeclk_1orposedgerdy)//clk_0=4800Hzif(rdy==1)clk_0<=0;elseclk_0<=~clk_0;regbps_clk;always@(bps_modeorclk_3orclk_2orclk_1orclk_0)//setupbpscase(bps_mode)2'b00:bps_clk=clk_0;2'b01:bps_clk=clk_1;2'b10:bps_clk=clk_2;2'b11:bps_clk=clk_3;default:bps_clk=1'bx;endcaseregparity_mode;always@(posedgerdy)parity_mode<=parity;wireeven_bit,odd_bit;assigneven_bit=^(data[7:0]);assignodd_bit=~even_bit;regp_bit;always@(parity_modeoreven_bitorodd_bit)case(parity_mode)1'b0:p_bit=odd_bit;1'b1:p_bit=even_bit;default:p_bit=1'bx;endcasereg[3:0]cnt;reg[10:0]send_data;regdata_out_enble,data_out;always@(negedgerdy)if(rdy==0)beginsend_data[10:0]<={1'b1,p_bit,data[7:0],1'b0};data_out_enble<=1;endalways@(posedgerdyorposedgebps_clk)if(rdy==1)cnt<=0;elseif(cnt==11)data_out_enble<=0;elsebegindata_out<=send_data[cnt];cnt<=cnt+1;endassignd_out=data_out_enble?data_out:1'bz;endmodule測試鼓勵的設(shè)計
使用ModelSim-Altera6.5e(QuartusII10.0)StarterEdition軟件進行仿真,為了精確模擬時鐘信號,采用1ns單位時間,100ps精度進行仿真。利用實例引用生成模塊。仿真鼓勵分為三次,測試發(fā)送數(shù)據(jù)為8‘b0101_1010,前兩次測試均采用4800bps的波特率,分別測試奇偶校驗功能和發(fā)送功能,第三次測試波特率控制功能和數(shù)據(jù)發(fā)送功能,控制9600bps波特率進行發(fā)送。測試文件`timescale1ns/100ps//62.5ns=16MHz`defineclk_cycle31moduletestbench;regrdy,parity,clk;reg[1:0]bps;reg[7:0]data;wired_out;
always#`clk_cycleclk=~clk;//產(chǎn)生鼓勵脈沖clkinitialbeginclk=0;bps[1:0]=2‘b00;//選擇波特率4800Hzdata[7:0]=8'b010
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- TY/T 3501.1-2024高山滑雪板性能測定第1部分:彈性
- 智能電網(wǎng)立項課題申報書
- 共建公司合同范本
- 減負教學課題研究申報書
- 課題申報書封面對不齊
- 旅游管理課題申報書
- 教改課題申報書文庫
- 護理課題申報書是什么
- 員工合同范本快遞
- 課題申報書文獻參考
- 2024年度智慧城市建設(shè)綜合解決方案投標書實例3篇
- 《勞動工具的改進設(shè)計》六年級綜合實踐課件
- TDT1055-2019第三次全國國土調(diào)查技術(shù)規(guī)程
- 2021年河南公務(wù)員行測考試真題及答案
- 廣告安裝施工及方案
- 單晶爐車間安全培訓
- 英語演講技巧與實訓學習通超星期末考試答案章節(jié)答案2024年
- 2024年海南省公務(wù)員錄用考試《行測》試題及答案解析
- 九年級化學人教版跨學科實踐3水質(zhì)檢測及自制凈水器教學設(shè)計
- 【醫(yī)院藥品管理系統(tǒng)探析與設(shè)計(論文)10000字】
- 螺旋體病梅毒課件
評論
0/150
提交評論