




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)(論文)說(shuō)明書(shū) 題 目 : 基于FPGA的RS232串口通信 院 (系) : 信息與通信學(xué)院 專(zhuān) 業(yè) : 微電子學(xué) 學(xué)生姓名 : 學(xué) 號(hào) : 指導(dǎo)教師 : 職 稱 : 副教授 2012 年 12 月 10 日摘 要實(shí)驗(yàn)設(shè)計(jì)了基于verilog描述的RS232串口通信控制器,通過(guò)串口調(diào)試工具實(shí)現(xiàn)PC機(jī)和FPGA互發(fā)和接收數(shù)據(jù)。完成的功能包括實(shí)現(xiàn)收發(fā)一幀10個(gè)bit、波特率為9600的串口通信控制器,F(xiàn)PGA接收數(shù)據(jù)后顯示在串口助手的接收數(shù)據(jù)欄里。實(shí)驗(yàn)的重心放在了RS232串口通信控制器發(fā)送模塊和接收模塊的設(shè)計(jì),采用了自頂向下的思路進(jìn)行設(shè)計(jì)。報(bào)告中給出了完整的設(shè)計(jì)思路和過(guò)程,并將系統(tǒng)分模塊
2、進(jìn)行了詳細(xì)的設(shè)計(jì),給出了verilog語(yǔ)言描述。完成了各個(gè)模塊以及系統(tǒng)整體的仿真驗(yàn)證。最終下載到實(shí)驗(yàn)板上測(cè)試通過(guò)。關(guān)鍵詞: RS232;verilog;串口通信;發(fā)送;接收;分頻AbstractExperiment design based on the description of the Verilog RS232 serial communication controller, through the serial port debugging tools to achieve PC machine and FPGA sending and receiving data. Complet
3、e function includes transmitting a frame of 10 bit, baud rate to 9600 serial communication controller, FPGA receives the data displayed in a serial assistants to receive data column.Key words:RS232 ; verilog ; Serial communication ;transmission ;receive ; frequency division 目 錄引言第一部分 任務(wù)要求41.1課題要求41.
4、2設(shè)計(jì)目標(biāo)4第二部分 系統(tǒng)設(shè)計(jì)52.1設(shè)計(jì)思路52.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì)6系統(tǒng)結(jié)構(gòu)框圖6系統(tǒng)邏輯功能劃分6層次模塊劃分7模塊設(shè)計(jì)圖9發(fā)送模塊設(shè)計(jì)10接收模塊設(shè)計(jì)11分頻模塊設(shè)計(jì)12按鍵防抖模塊設(shè)計(jì)12譯碼顯示模塊設(shè)計(jì)122.3系統(tǒng)硬件語(yǔ)言描述13描述思路13總體電路的描述13分塊電路的描述142.4系統(tǒng)仿真驗(yàn)證21第三部分 結(jié)果與分析233.1實(shí)現(xiàn)功能說(shuō)明233.2器件資源分析233.3故障和問(wèn)題分析25第四部分 總結(jié)與結(jié)論264.1實(shí)驗(yàn)結(jié)論264.2總結(jié)體會(huì)26第五部分 附錄部分285.1元器件和儀表清單285.2VHDL源代碼285.3電路圖395.4參考文獻(xiàn)41引言數(shù)據(jù)采集系統(tǒng)常需要進(jìn)行異步串
5、行數(shù)據(jù)傳輸。目前廣泛使用的RS232異步串行接口,如8250、 NS16450等專(zhuān)用集成器件,雖然使用簡(jiǎn)單,卻占用電路板面積、布線復(fù)雜等缺點(diǎn)。片上系統(tǒng)SoC(System on Chip)是以嵌入式系統(tǒng)為核心,以IP復(fù)用技術(shù)為基礎(chǔ),集軟、硬件于一體的設(shè)計(jì)方法。使用IP復(fù)用技術(shù),將UART集成到FPGA器件上,可增加系統(tǒng)的可靠性,縮小PCB板面積;其次由于IP核的特點(diǎn),使用IP核可使整個(gè)系統(tǒng)更加靈活,還可根據(jù)需要實(shí)現(xiàn)功能升級(jí)、擴(kuò)充和裁減。這里采用VHDL語(yǔ)言編寫(xiě) UART模塊,將其集成到FPGA上,與器件其他功能模塊構(gòu)成片上系統(tǒng)SoC。第一部分 任務(wù)要求1.1課題要求設(shè)計(jì)并實(shí)現(xiàn)一個(gè)可以和PC機(jī)通
6、過(guò)RS232協(xié)議進(jìn)行通信的串口通信控制器。1. PC機(jī)通過(guò)串口調(diào)試工具來(lái)驗(yàn)證程序的功能;2. 實(shí)現(xiàn)一個(gè)收發(fā)一幀10個(gè)bit的串口控制器,10個(gè)bit是1位起始位,8位數(shù)據(jù)位,1位結(jié)束位,無(wú)奇偶校驗(yàn)位;3. 串口的波特率選擇9600bit,串口處于全雙工工作狀態(tài);4. PC機(jī)可隨時(shí)向FPGA發(fā)送0F的十六進(jìn)制數(shù)據(jù);1.2設(shè)計(jì)目標(biāo)根據(jù)課題要求,實(shí)驗(yàn)中將目標(biāo)進(jìn)行了細(xì)化,敘述如下:1. 設(shè)定數(shù)據(jù)幀格式為10bit,其中第一位為起始位,定位低電平,8位數(shù)據(jù)位,1位結(jié)束位,無(wú)數(shù)據(jù)傳輸時(shí)為高電平;2.通過(guò)串口調(diào)試工具向FPGA發(fā)送數(shù)據(jù),F(xiàn)PGA接收后顯示串口調(diào)試工具的接收數(shù)據(jù)窗口;第二部分 系統(tǒng)設(shè)計(jì)2.1系
7、統(tǒng)結(jié)構(gòu)設(shè)計(jì)2.1.1系統(tǒng)結(jié)構(gòu)框圖接收數(shù)據(jù)PC發(fā)送數(shù)據(jù)FPGA PGA圖2.1 RS232串口通信控制器系統(tǒng)結(jié)構(gòu)框圖串口通信控制器的輸入是PC發(fā)送的數(shù)據(jù)。當(dāng)發(fā)送數(shù)據(jù)按鍵按下時(shí),F(xiàn)PGA向PC發(fā)送已定義好的數(shù)據(jù)。同時(shí),當(dāng)FPGA檢測(cè)到PC發(fā)送數(shù)據(jù)幀的起始位時(shí),開(kāi)始接收數(shù)據(jù),并行輸出。2.1.2系統(tǒng)邏輯功能劃分PC發(fā)送模塊分頻模塊接收模塊圖2.2 RS232串口通信控制器系統(tǒng)邏輯框圖如圖2.2所示,系統(tǒng)可邏輯地劃分為三個(gè)子系統(tǒng):一是分頻子系統(tǒng),包括為發(fā)送模塊和接收模塊提供波特率為9600bit的時(shí)鐘;二是發(fā)送子系統(tǒng),包括發(fā)送模塊;三是接收子系統(tǒng),包括接收模塊和串口助手顯示模塊。2.1.3層次模塊劃分
8、系統(tǒng)劃分為兩層,自頂向下分別是頂層模塊、控制器子模塊。頂層描述了整個(gè)系統(tǒng)的功能和運(yùn)行;控制器子模塊實(shí)現(xiàn)系統(tǒng)中各個(gè)獨(dú)立而完整的功能部分,每個(gè)層次可用一個(gè)或多個(gè)具體模塊加以實(shí)現(xiàn)。A. 頂層模塊:作用為集成子模塊功能,控制子模塊的連接和耦合信號(hào)。定義名稱為uart1,在其中例化子模塊。B. 中層模塊:具體實(shí)現(xiàn)頂層模塊的描述,包括的功能主要是產(chǎn)生時(shí)鐘信號(hào),發(fā)送模塊和接收模塊的定義和狀態(tài)的轉(zhuǎn)移:speed_select時(shí)鐘分頻模塊,將50MHz的時(shí)鐘分頻為9600×1Hz的時(shí)鐘。定義波特率為9600bit,波特因子為1。輸入:50MHz晶振信號(hào)。輸出:送往接收模塊和發(fā)送模塊的9600×
9、;11Hz的信號(hào)。a) my_uart_rx接收模塊,檢測(cè)接收端,若檢測(cè)到低電平則開(kāi)始接收數(shù)據(jù),每隔1個(gè)周期接收一位數(shù)據(jù),直到接滿8bit。輸入:9600×1Hz時(shí)鐘信號(hào)、PC機(jī)發(fā)送的串行數(shù)據(jù)。輸出:PC機(jī)發(fā)送的串行數(shù)據(jù)并行輸出。b) my_uart_tx發(fā)送模塊。當(dāng)發(fā)送數(shù)據(jù)按鍵確定有效時(shí)向PC發(fā)送自定義的數(shù)據(jù)。輸入:9600×1Hz時(shí)鐘信號(hào)、發(fā)送數(shù)據(jù)按鍵。輸出:字符串的串行輸出。以上模塊分別定義在一個(gè)工程內(nèi),最后在頂層模塊中用語(yǔ)言進(jìn)行連接。2.1.4模塊設(shè)計(jì)圖發(fā)送模塊設(shè)計(jì)發(fā)送模塊工作時(shí)首先檢測(cè)發(fā)送數(shù)據(jù)下降沿到來(lái),如復(fù)位信號(hào)有效時(shí),控制器處于復(fù)位狀態(tài),一旦檢測(cè)到復(fù)位信號(hào)無(wú)效
10、并且檢測(cè)到下降沿的到來(lái)則進(jìn)入起始狀態(tài)。從PC接收到的數(shù)據(jù)幀:1位起始位+8位數(shù)據(jù)位+1()位停止位(無(wú)奇偶校驗(yàn)),檢測(cè)到電腦端的起始位后(rs232_rx下降沿)打開(kāi)波特率發(fā)生器,到起始電平時(shí)間的中點(diǎn)時(shí)檢測(cè)數(shù)據(jù),每隔“一個(gè)”電平時(shí)間,采集一次并存入接收暫存寄存器,待到1(或)個(gè)結(jié)束位到來(lái)后將接收暫存寄存器數(shù)據(jù)放入接收寄存器并關(guān)閉波特率發(fā)生器,清楚數(shù)據(jù)檢測(cè)使能標(biāo)志。 接收模塊設(shè)計(jì)與發(fā)送模塊類(lèi)似,接收模塊分為檢驗(yàn)下降沿到來(lái)、啟動(dòng)接收數(shù)據(jù)使能有效、接收數(shù)據(jù)處理等模塊。沒(méi)有檢測(cè)到起始位時(shí)程序一直處于開(kāi)始狀態(tài),一旦檢測(cè)到低電平的起始位(neg_rs232_rx=1),則進(jìn)入找中狀態(tài)。定時(shí)計(jì)數(shù)器cnt=0
11、時(shí)則進(jìn)入等待狀態(tài),當(dāng)定時(shí)計(jì)數(shù)器cnt=1時(shí)對(duì)數(shù)據(jù)進(jìn)行采樣,直到移位計(jì)數(shù)器rx_temp_data0 <= rs232_rx;,即8bit數(shù)據(jù)采樣完畢,此時(shí)進(jìn)入停止?fàn)顟B(tài),重新返回開(kāi)始狀態(tài)。檢測(cè)到由接收模塊使能位的下降沿后開(kāi)啟波特率發(fā)生器并使能發(fā)送,隔半個(gè)電平時(shí)間后開(kāi)始發(fā)送數(shù)據(jù)幀每隔“一個(gè)”電平時(shí)間更新要發(fā)的數(shù)據(jù)位,發(fā)送一位結(jié)束位后停止工作2.1.7分頻模塊設(shè)計(jì)串行異步通信的關(guān)鍵在于準(zhǔn)確地檢測(cè)到起始位,因此接收端的時(shí)鐘必須采用比波特率更高的時(shí)鐘信號(hào),以便提高采樣的分辨率和抗干擾能力,從而更準(zhǔn)確地判定起始位。本實(shí)驗(yàn)中波特率為9600bit,取波特率因子為1。接收端檢測(cè)到傳輸線上電平由高到低的變
12、化后便開(kāi)始對(duì)接收時(shí)鐘進(jìn)行計(jì)數(shù),當(dāng)計(jì)到8個(gè)時(shí)鐘以后,再次對(duì)傳輸線進(jìn)行采樣,如果仍為低電平,則確認(rèn)是起始位,而不是干擾信號(hào),之后每隔16個(gè)時(shí)鐘進(jìn)行一次采樣,直到采樣到停止位。而且由于每一次采樣都是在碼元的中心進(jìn)行的,這樣還可以最大限度地避免收、發(fā)時(shí)鐘偏差對(duì)數(shù)據(jù)傳送造成的影響。2.2系統(tǒng)硬件語(yǔ)言描述verilog描述思路第二部分“系統(tǒng)設(shè)計(jì)”中對(duì)系統(tǒng)的功能和邏輯結(jié)構(gòu)、狀態(tài)轉(zhuǎn)移以及模塊劃分都有了詳細(xì)的敘述,模塊間的耦合和信號(hào)的傳遞關(guān)系已經(jīng)清晰。可以使用verilog語(yǔ)言描述硬件電路了。發(fā)送模塊和接收模塊的verilog語(yǔ)言描述按照事先設(shè)計(jì)好的狀態(tài)轉(zhuǎn)移進(jìn)行編寫(xiě)可以使電路思想明晰化,避免編程過(guò)程中用軟件的思
13、維去描述硬件的電路系統(tǒng),也可有效避免系統(tǒng)性的錯(cuò)誤。由于進(jìn)行了細(xì)致的模塊劃分,模塊的間的耦合程度降到了很低,這就使得電路設(shè)計(jì)的可靠性大為增強(qiáng),只要模塊的輸出滿足了功能定義,整個(gè)系統(tǒng)就能正常工作,即便個(gè)別模塊出現(xiàn)問(wèn)題,也不會(huì)過(guò)多影響到其他模塊。實(shí)際測(cè)試過(guò)程中也印證了這一點(diǎn)。2.2.2總體電路的描述頂層符號(hào)文件描述如下:圖2.8 頂層符號(hào)文件2.2.3分塊電路的verilog描述本節(jié)給出分塊電路的硬件描述,對(duì)關(guān)鍵部分進(jìn)行了分析。1、 發(fā)送模塊的描述timescale 1ns / 1psmodule my_uart_tx( clk,rst_n, rx_data,rx_int,rs232_tx, clk
14、_bps,bps_start,led1);input clk;/ 50MHz主時(shí)鐘input rst_n;/低電平復(fù)位信號(hào)input clk_bps;/ clk_bps_r高電平為接收數(shù)據(jù)位的中間采樣點(diǎn),同時(shí)也作為發(fā)送數(shù)據(jù)改變點(diǎn)input7:0 rx_data;/接收數(shù)據(jù)寄存器input rx_int;/接收數(shù)據(jù)中斷信號(hào),接收到數(shù)據(jù)期間始終為高電平,在該模塊中利用它的下降沿來(lái)啟動(dòng)串口發(fā)送數(shù)據(jù)output rs232_tx;/ RS232發(fā)送數(shù)據(jù)信號(hào)output bps_start;/接收或者要發(fā)送數(shù)據(jù),波特率時(shí)鐘啟動(dòng)信號(hào)置位output led1;reg rx_int0,rx_int1,rx_
15、int2;/rx_int信號(hào)寄存器,捕捉下降沿濾波用wire neg_rx_int;/ rx_int下降沿標(biāo)志位always (posedge clk or negedge rst_n) beginif(!rst_n) beginrx_int0 <= 1'b0;rx_int1 <= 1'b0;rx_int2 <= 1'b0; endelse beginrx_int0 <= rx_int;rx_int1 <= rx_int0;rx_int2 <= rx_int1; endEndassign neg_rx_int = rx_int1 &a
16、mp; rx_int2;/捕捉到下降沿后,neg_rx_int拉高保持一個(gè)主時(shí)鐘周期reg7:0 tx_data;/待發(fā)送數(shù)據(jù)的寄存器reg bps_start_r;reg tx_en;/發(fā)送數(shù)據(jù)使能信號(hào),高有效reg3:0 num;always (posedge clk or negedge rst_n) beginif(!rst_n) beginbps_start_r <= 1'bz;tx_en <= 1'b0;tx_data <= 8'd0;endelse if(neg_rx_int) begin/接收數(shù)據(jù)完畢,準(zhǔn)備把接收到的數(shù)據(jù)發(fā)回去bps_s
17、tart_r <= 1'b1;tx_data <= rx_data;/把接收到的數(shù)據(jù)存入發(fā)送數(shù)據(jù)寄存器tx_en <= 1'b1;/進(jìn)入發(fā)送數(shù)據(jù)狀態(tài)中endelse if(num=4'd11) begin/數(shù)據(jù)發(fā)送完成,復(fù)位bps_start_r <= 1'b0;tx_en <= 1'b0;endendassign bps_start = bps_start_r;reg rs232_tx_r;reg led1_r;always (posedge clk or negedge rst_n) beginif(!rst_n) be
18、ginnum <= 4'd0;rs232_tx_r <= 1'b1;led1_r<=1'b0;endelse if(tx_en) beginif(clk_bps)begin led1_r<=1'b1;case (num)4'd0: rs232_tx_r <= 1'b0; /發(fā)送起始位4'd1: rs232_tx_r <= tx_data0;/發(fā)送bit04'd2: rs232_tx_r <= tx_data1;/發(fā)送bit14'd3: rs232_tx_r <= tx_dat
19、a2;/發(fā)送bit24'd4: rs232_tx_r <= tx_data3;/發(fā)送bit34'd5: rs232_tx_r <= tx_data4;/發(fā)送bit44'd6: rs232_tx_r <= tx_data5;/發(fā)送bit54'd7: rs232_tx_r <= tx_data6;/發(fā)送bit64'd8: rs232_tx_r <= tx_data7;/發(fā)送bit74'd9: rs232_tx_r <= 1'b1;/發(fā)送結(jié)束位default: rs232_tx_r <= 1'b
20、1;endcasenum <= num+1'b1;endelse if(num=4'd11)begin num <= 4'd0;/復(fù)位led1_r<=1'b0;endendendassign rs232_tx = rs232_tx_r;assign led1=led1_r;endmodule2、 接收模塊的描述timescale 1ns / 1psmodule my_uart_rx(clk,rst_n, rs232_rx,rx_data,rx_int,clk_bps,bps_start,led0);input clk;/ 50MHz主時(shí)鐘inp
21、ut rst_n;/低電平復(fù)位信號(hào)input rs232_rx;/ RS232接收數(shù)據(jù)信號(hào)input clk_bps;/ clk_bps的高電平為接收或者發(fā)送數(shù)據(jù)位的中間采樣點(diǎn)output bps_start;/接收到數(shù)據(jù)后,波特率時(shí)鐘啟動(dòng)信號(hào)置位output7:0 rx_data;/接收數(shù)據(jù)寄存器,保存直至下一個(gè)數(shù)據(jù)來(lái)到output rx_int;/接收數(shù)據(jù)中斷信號(hào),接收到數(shù)據(jù)期間始終為高電平output led0;reg rs232_rx0,rs232_rx1,rs232_rx2,rs232_rx3;/接收數(shù)據(jù)寄存器,濾波用wire neg_rs232_rx;/表示數(shù)據(jù)線接收到下降沿alw
22、ays (posedge clk or negedge rst_n) beginif(!rst_n) beginrs232_rx0 <= 1'b0;rs232_rx1 <= 1'b0;rs232_rx2 <= 1'b0;rs232_rx3 <= 1'b0;endelse beginrs232_rx0 <= rs232_rx;rs232_rx1 <= rs232_rx0;rs232_rx2 <= rs232_rx1;rs232_rx3 <= rs232_rx2;endendassign neg_rs232_rx =
23、rs232_rx3 & rs232_rx2 & rs232_rx1 & rs232_rx0;/接收到下降沿后neg_rs232_rx置高一個(gè)時(shí)鐘周期reg bps_start_r;reg3:0 num;/移位次數(shù)reg rx_int;/接收數(shù)據(jù)中斷信號(hào),接收到數(shù)據(jù)期間始終為高電平always (posedge clk or negedge rst_n)if(!rst_n) beginbps_start_r <= 1'bz;rx_int <= 1'b0;endelse if(neg_rs232_rx) begin/接收到串口接收線rs232_r
24、x的下降沿標(biāo)志信號(hào)bps_start_r <= 1'b1;/啟動(dòng)串口準(zhǔn)備數(shù)據(jù)接收rx_int <= 1'b1;/接收數(shù)據(jù)中斷信號(hào)使能endelse if(num=4'd12) begin/接收完有用數(shù)據(jù)信息bps_start_r <= 1'b0;/數(shù)據(jù)接收完畢,釋放波特率啟動(dòng)信號(hào)rx_int <= 1'b0;/接收數(shù)據(jù)中斷信號(hào)關(guān)閉endassign bps_start = bps_start_r;reg7:0 rx_data_r;/串口接收數(shù)據(jù)寄存器,保存直至下一個(gè)數(shù)據(jù)來(lái)到reg led0_r;reg7:0 rx_temp_dat
25、a;/當(dāng)前接收數(shù)據(jù)寄存器always (posedge clk or negedge rst_n)if(!rst_n) beginrx_temp_data <= 8'd0;num <= 4'd0;rx_data_r <= 8'd0;led0_r<=1'b0;endelse if(rx_int) begin/接收數(shù)據(jù)處理 led0_r<=1'b1;if(clk_bps) begin/讀取并保存數(shù)據(jù),接收數(shù)據(jù)為一個(gè)起始位,8bit數(shù)據(jù),1或2個(gè)結(jié)束位case (num)4'd1: rx_temp_data0 <=
26、rs232_rx;/鎖存第0bit4'd2: rx_temp_data1 <= rs232_rx;/鎖存第1bit4'd3: rx_temp_data2 <= rs232_rx;/鎖存第2bit4'd4: rx_temp_data3 <= rs232_rx;/鎖存第3bit4'd5: rx_temp_data4 <= rs232_rx;/鎖存第4bit4'd6: rx_temp_data5 <= rs232_rx;/鎖存第5bit4'd7: rx_temp_data6 <= rs232_rx;/鎖存第6bit4
27、'd8: rx_temp_data7 <= rs232_rx;/鎖存第7bitdefault: ;endcasenum <= num+1'b1;endelse if(num = 4'd12) begin/我們的標(biāo)準(zhǔn)接收模式下只有1+8+1(2)=11bit的有效數(shù)據(jù)num <= 4'd0;/接收到STOP位后結(jié)束,num清零rx_data_r <= rx_temp_data;/把數(shù)據(jù)鎖存到數(shù)據(jù)寄存器rx_data中l(wèi)ed0_r<=1'b0;endendassign rx_data = rx_data_r;assign led
28、0=led0_r;endmodule3、 分頻模塊的描述module speed_select(clk,rst_n,bps_start,clk_bps);input clk;/ / 50MHz主時(shí)鐘input rst_n;/低電平復(fù)位信號(hào)input bps_start;/接收到數(shù)據(jù)后,波特率時(shí)鐘啟動(dòng)信號(hào)置位output clk_bps;/ clk_bps的高電平為接收或者發(fā)送數(shù)據(jù)位的中間采樣點(diǎn)defineBPS_PARA5207/波特率9600分頻點(diǎn)數(shù)define BPS_PARA_22603reg12:0 cnt;reg clk_bps_r;reg2:0 uart_ctrl;/ uart?a
29、lways (posedge clk or negedge rst_n) beginif(!rst_n) cnt <= 13'd0;else if(cnt = BPS_PARA) | !bps_start) cnt <= 13'd0;/clear else cnt <= cnt+1'b1; endalways (posedge clk or negedge rst_n) beginif(!rst_n) clk_bps_r <= 1'b0;else if(cnt = BPS_PARA_2) clk_bps_r <= 1'b1;
30、else clk_bps_r <= 1'b0; endassign clk_bps = clk_bps_r;endmodule2.3系統(tǒng)仿真驗(yàn)證系統(tǒng)仿真分為兩個(gè)步驟進(jìn)行,首先是關(guān)鍵模塊的仿真,驗(yàn)證子系統(tǒng)功能的正確性,然后是綜合仿真,驗(yàn)證整個(gè)系統(tǒng)的功能。仿真環(huán)境是QuartusII 7.2。首先是分頻模塊的仿真。由仿真結(jié)果可看出bclk的時(shí)鐘周期為104us,與要求結(jié)果一致,頻率為9600Hz。圖2.9 分頻模塊仿真圖(9600Hz分頻)然后是發(fā)送模塊的仿真波形。下圖為發(fā)送模塊第一個(gè)字符發(fā)送的波形,第一個(gè)字符的數(shù)值為“01100110”,發(fā)送時(shí)低位先發(fā)送,因此仿真波形由時(shí)間的先后順
31、序,其序列應(yīng)為“01100110”,每一幀數(shù)據(jù)為10個(gè)bit,第一個(gè)bit為起始位,最后一個(gè)bit為停止位,可以看出,中間的八位為“01100110”,說(shuō)明了仿真波形的正確性。圖2.10 發(fā)送模塊仿真圖下圖為接收模塊仿真圖。設(shè)定的輸入信號(hào)為“10010110”。接收時(shí)將先接收到的數(shù)據(jù)作為低位,后接收到的數(shù)據(jù)作為高位,因此轉(zhuǎn)化成的并行數(shù)據(jù)應(yīng)為“01101001”,因此仿真波形正確。圖2.11 接收模塊仿真圖第三部分 結(jié)果與分析3.1實(shí)現(xiàn)功能說(shuō)明本實(shí)驗(yàn)完成的RS232串口通信控制器,完成了課題要求的所有功能。由于頂層設(shè)計(jì)采用了子系統(tǒng)分模塊描述的方法,使得控制器具有很好的擴(kuò)展性??梢栽诓桓淖兿到y(tǒng)框架
32、和模塊間電路連接關(guān)系,增加其他模塊,實(shí)現(xiàn)其他功能。本課題中并沒(méi)有在數(shù)據(jù)幀中加入校驗(yàn)位,僅僅實(shí)現(xiàn)了1位起始位,1位停止位和8位數(shù)據(jù)位的傳輸。初步實(shí)現(xiàn)了PC和FPGA之間的通信。數(shù)字系統(tǒng)的設(shè)計(jì),真正的重點(diǎn)在于把系統(tǒng)層面的設(shè)計(jì)做好,把系統(tǒng)狀態(tài)機(jī)設(shè)計(jì)完整,系統(tǒng)架構(gòu)清晰,層次明確,穩(wěn)定性好,可擴(kuò)展和可移植性好,這樣的系統(tǒng)給到用戶,只要添加用戶模塊或者稍作修改即可完成非特定的功能。3.2器件資源分析在設(shè)計(jì)階段,對(duì)系統(tǒng)描述采用過(guò)多種方式,嘗試了多種描述,代碼的長(zhǎng)度在增加,模塊在增多,但系統(tǒng)穩(wěn)定性和可擴(kuò)展性也在增強(qiáng),層次結(jié)構(gòu)和模塊設(shè)計(jì)也更加完善。設(shè)計(jì)之初對(duì)資源使用沒(méi)有多少概念,時(shí)常以軟件的思想描述硬件,在描述
33、中使用乘法等資源耗費(fèi)嚴(yán)重的操作,也曾使用過(guò)嵌套多層的IF-ELSE語(yǔ)句,產(chǎn)生很長(zhǎng)的選擇器,降低了模塊的可靠性,增加處理延時(shí)。隨著設(shè)計(jì)的深入,加上反復(fù)求精的過(guò)程磨練,逐步對(duì)硬件描述綜合出的實(shí)際電路形式有了更多的理解,對(duì)延時(shí)和資源占用有了初步概念。一個(gè)顯見(jiàn)的結(jié)論是描述代碼的長(zhǎng)度和綜合后的電路形式與資源占用無(wú)必然聯(lián)系。需要關(guān)注編譯器在綜合時(shí)如何將verilog行為級(jí)描述轉(zhuǎn)化為結(jié)構(gòu)化的門(mén)級(jí)電路,才能分析清楚資源占用率和電路結(jié)構(gòu)。行為級(jí)描述可能與實(shí)際綜合的電路產(chǎn)生不一致,需要謹(jǐn)慎對(duì)待。圖3.1是QuartusII編譯工程后的綜合報(bào)告。邏輯單元占用率27%。圖3.1 QuartusII編譯綜合報(bào)告3.3故
34、障和問(wèn)題分析實(shí)驗(yàn)中由于仔細(xì)設(shè)計(jì)了詳細(xì)劃分了子模塊、各模塊的實(shí)現(xiàn)都仔細(xì)進(jìn)行了描述,故沒(méi)有出現(xiàn)太多的故障。由于以前對(duì)verilog語(yǔ)言的理解停留在很低的層次,甚至和C語(yǔ)言等軟件語(yǔ)言混為一談,沒(méi)有很好地理解狀態(tài)機(jī)、硬件并發(fā)性、數(shù)字系統(tǒng)設(shè)計(jì)的方法,主要的麻煩產(chǎn)生在verilog描述上。在查閱了諸多相關(guān)資料后對(duì)verilog的語(yǔ)法基本熟悉,從最初的類(lèi)似C語(yǔ)言的風(fēng)格到模塊初步成型、狀態(tài)機(jī)引入,再到最后全模塊化,自頂向下設(shè)計(jì)系統(tǒng),完成verilog描述。最深的感受在于,開(kāi)始時(shí)一心專(zhuān)注于代碼的編寫(xiě)和語(yǔ)法的使用,忽視了系統(tǒng)設(shè)計(jì),導(dǎo)致設(shè)計(jì)結(jié)果不令人滿意,后來(lái)逐步采用自頂向下的設(shè)計(jì)思路,先從邏輯上把系統(tǒng)的功能和子系統(tǒng)的劃分描述清楚,然后設(shè)計(jì)各個(gè)模塊的接口和定義,最后分別去描述底層各個(gè)模塊的功能和實(shí)現(xiàn),清晰明了,一氣呵成。這也是系統(tǒng)沒(méi)有多少故障的主要原因。verilog描述中解決的最成功的一個(gè)問(wèn)題是Multi
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中語(yǔ)文任務(wù)群教學(xué)與學(xué)生自主學(xué)習(xí)能力培養(yǎng)研究論文
- 初中勞動(dòng)教育課程實(shí)施過(guò)程中的家校合作模式研究論文
- 節(jié)假保衛(wèi)日管理制度
- 苗木購(gòu)銷(xiāo)購(gòu)管理制度
- 茶藝班活動(dòng)管理制度
- 調(diào)壓器安裝技術(shù)規(guī)范書(shū)
- 融合終端證書(shū)請(qǐng)求文件導(dǎo)出流程
- 《一年級(jí)下冊(cè)語(yǔ)文園地三》課件
- 電子商務(wù)案例分享-凡客誠(chéng)品成功之道
- 行政許可案例及分析
- 期末試卷(試題)(含答案)-2024-2025學(xué)年一年級(jí)下冊(cè)數(shù)學(xué)北師大版
- 2024年地理中考模擬考試地理(貴州貴陽(yáng)卷)(A4考試版)
- 上海浦東新區(qū)公辦學(xué)校儲(chǔ)備教師教輔招聘筆試真題2022
- 國(guó)開(kāi)(甘肅)2024年春《地域文化(專(zhuān))》形考任務(wù)1-4終考答案
- 安全生產(chǎn)月“一把手”講安全課件
- 兒科常用藥、用藥特點(diǎn)及護(hù)理ppt
- 胎心監(jiān)護(hù)以及判讀
- 企業(yè)資產(chǎn)損失所得稅稅前扣除鑒證業(yè)務(wù)操作的指南
- 高等數(shù)學(xué)(下冊(cè))資料期末復(fù)習(xí)試題與答案
- 四沖程內(nèi)燃機(jī) 機(jī)械原理課程設(shè)計(jì)說(shuō)明書(shū)
- BS EN 10222-5-2000用于壓力目的的鋼鍛件—第5部分:馬口鐵鋼奧氏體鋼和奧氏體-鐵素體不銹鋼
評(píng)論
0/150
提交評(píng)論