RS232-接口數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議設(shè)計(jì)_第1頁(yè)
RS232-接口數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議設(shè)計(jì)_第2頁(yè)
RS232-接口數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議設(shè)計(jì)_第3頁(yè)
RS232-接口數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議設(shè)計(jì)_第4頁(yè)
RS232-接口數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

崔延博

張凱

陰世琦RS232

接口數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議設(shè)計(jì)

并行數(shù)據(jù)轉(zhuǎn)發(fā)為RS232協(xié)議的串口數(shù)據(jù)

串口RS232根本協(xié)議概要系統(tǒng)框圖及模塊功能實(shí)現(xiàn)實(shí)現(xiàn)程序測(cè)試鼓勵(lì)的設(shè)計(jì)仿真結(jié)果綜合工具結(jié)果

串口RS232根本協(xié)議概要1.通信的種類并行傳輸式:一次的傳輸量為8個(gè)位〔1個(gè)字節(jié)〕。特點(diǎn):傳輸率高,可靠性相對(duì)較差,適用于短距離通信。串行傳輸式:一次傳輸1個(gè)位。特點(diǎn):可靠性高,傳輸率相對(duì)較低,適用于遠(yuǎn)距離通信。

2.RS232簡(jiǎn)介 RS-232全名是“數(shù)據(jù)終端設(shè)備〔DTE〕和數(shù)據(jù)通訊設(shè)備〔DCE〕之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”,也被稱為標(biāo)準(zhǔn)串口,是最常用的一種串行通訊接口。RS232采用負(fù)邏輯電平,定義+5~+12V為低電平,-12~-5V為高電平。3.RS232協(xié)議介紹 在數(shù)據(jù)輸入過(guò)程中,數(shù)據(jù)1位1位地從外設(shè)進(jìn)入接口的“接收移位寄器”,當(dāng)“接收移位存放器”中已接收完1個(gè)字符的各個(gè)位后,數(shù)據(jù)就從“接收移位存放器”進(jìn)入“數(shù)據(jù)輸入存放器”,CPU從“數(shù)據(jù)輸入存放器”中并行讀取接收到的字符。在數(shù)據(jù)輸出過(guò)程中,CPU把要輸出的字符并行送入“數(shù)據(jù)輸出存放器”,“數(shù)據(jù)輸出存放器”的內(nèi)容傳輸?shù)健鞍l(fā)送移位存放器”,然后由“發(fā)送移位存放器”移位,把數(shù)據(jù)1位1位地送到外設(shè)。完成上述”串<—>并”轉(zhuǎn)換功能的電路,通常稱為“通用異步收發(fā)器”。 為了為通信雙方提供何時(shí)開始收發(fā)和收發(fā)結(jié)束的標(biāo)志,發(fā)收雙方要把所采用的起止式格式〔包括字符的數(shù)據(jù)位長(zhǎng)度,停止位位數(shù),有無(wú)校驗(yàn)位以及是奇校驗(yàn)還是偶校驗(yàn)等〕和數(shù)據(jù)傳輸速率作統(tǒng)一規(guī)定。起止式異步協(xié)議的特點(diǎn)是一個(gè)字符一個(gè)字符傳輸,并且傳送一個(gè)字符總是以起始位開始,以停止位結(jié)束,字符之間沒(méi)有固定的時(shí)間間隔要求。 本次設(shè)計(jì)采用的數(shù)據(jù)幀格式為:一位起始位,8位數(shù)據(jù)位,一位校驗(yàn)位和一位停止位〔停止位可為一位、一位半或二位,本次設(shè)計(jì)選用一位停止位〕,停止位后面是不定長(zhǎng)度的空閑位。其中停止位和空閑為高電平邏輯1;起始位為低電平,邏輯0。系統(tǒng)框圖及模塊功能實(shí)現(xiàn)

1.模塊端口說(shuō)明

設(shè)計(jì)RS232接口數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議模塊,并且將8位并行數(shù)據(jù)轉(zhuǎn)發(fā)為RS232協(xié)議的串口數(shù)據(jù)發(fā)送出去。模塊具體要求如下:模塊名:modulers232;外部提供:clk信號(hào),16MHz時(shí)鐘;外部信號(hào):rdy數(shù)據(jù)準(zhǔn)備好信號(hào);當(dāng)rdy由低電平變?yōu)楦唠娖讲⒊掷m(xù)一個(gè)時(shí)鐘長(zhǎng)度,

數(shù)據(jù)開始轉(zhuǎn)換并且發(fā)送。外部信號(hào):data[7:0],需要發(fā)送的8位并行數(shù)據(jù);外部控制:bps[1:0],波特率設(shè)置信號(hào);00:4800bps,01:9600bps

10:19200bps,11:38400bps串行輸出信號(hào):d_out,串行數(shù)據(jù)輸出口;外部控制:parity,奇偶校驗(yàn)控制信號(hào);0:奇校驗(yàn),1:偶校驗(yàn)2.系統(tǒng)框圖波特率產(chǎn)生模塊校驗(yà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;計(jì)數(shù)器rdyclk_2(19200Hz)計(jì)數(shù)器clk_1(9600Hz)計(jì)數(shù)器clk_0(4800Hz)計(jì)數(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計(jì)數(shù)器rdyclk_2(19200Hz)計(jì)數(shù)器clk_1(9600Hz)計(jì)數(shù)器clk_0(4800Hz)計(jì)數(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校驗(yàn)碼生成模塊even_bitodd_bitdata譯碼電路p_bitrdy校驗(yàn)位產(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校驗(yàn)碼生成模塊even_bitodd_bitdata譯碼電路p_bit并行轉(zhuǎn)串行模塊rdydata_out計(jì)數(shù)器rdy計(jì)數(shù)器rdyclk_2(19200Hz)clk_1(9600Hz)計(jì)數(shù)器rdyclk_0(4800Hz)計(jì)數(shù)器rdyclk(16MHz)clk_3(38400Hz)11位發(fā)送幀產(chǎn)生電路datardySend_data實(shí)現(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測(cè)試鼓勵(lì)的設(shè)計(jì)

使用ModelSim-Altera6.5e(QuartusII10.0)StarterEdition軟件進(jìn)行仿真,為了精確模擬時(shí)鐘信號(hào),采用1ns單位時(shí)間,100ps精度進(jìn)行仿真。利用實(shí)例引用生成模塊。仿真鼓勵(lì)分為三次,測(cè)試發(fā)送數(shù)據(jù)為8‘b0101_1010,前兩次測(cè)試均采用4800bps的波特率,分別測(cè)試奇偶校驗(yàn)功能和發(fā)送功能,第三次測(cè)試波特率控制功能和數(shù)據(jù)發(fā)送功能,控制9600bps波特率進(jìn)行發(fā)送。測(cè)試文件`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)生鼓勵(lì)脈沖clkinitialbeginclk=0;bps[1:0]=2‘b00;//選擇波特率4800Hzdata[7:0]=8'b010

溫馨提示

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

評(píng)論

0/150

提交評(píng)論