freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于verilog的串口通信實驗指導和源程序-文庫吧資料

2024-08-23 17:16本頁面
  

【正文】 : if (num == 10) begin bps_start_r = 139。 //收到起始位,把num+1,正常情況下,r_center這個狀態(tài)只出現(xiàn)一次,因此這里可以寫num=num+1; end else if (!rx) state = r_center。 //收到中點置位信號,進入r_sample采樣狀態(tài); num = num + 139。 //收到起始位確認信號,進入r_center等待中點狀態(tài); else state = state。d0。 //給并行輸出數(shù)據寄存器復位清零; data_ready =0。 //給num計數(shù)器復位,初始化0; rx_data_r = 839。 num = 439。 //保證當rx_n跳變?yōu)榈碗娖綍r,bps_start_r仍然為高電平; end assign bps_start1 = bps_start_r。b1。b0。 ~rx0。 ~rx2 amp。 rx3 = rx2。 rx1 = rx0。b1。b1。b1。b1。b100。b010。b001。 //輸出標志緩沖寄存器; reg [7:0] led。 //內部緩沖寄存器,用來給bps_start賦值; reg [3:0] num。 //定義狀態(tài)寄存器變量,用狀態(tài)機來表示接收器的運行過程; reg [7:0] rx_data_r 。 //定義四個寄存器,用來檢測起始位0; wire rx_n。 //串并轉換后的輸出寄存器; output [7:0] led。 //中間點采樣信號; output bps_start1。 //串行輸入信號。 //16倍過采樣信號; input rst_n1。 endmodule 接收端模塊:module uart_rx (clk16x1,rst_n1,rx,clk_bps1,bps_start1,rx_data,led)。 end assign clk_bps = clk_bps_r。 end else t_16x = t_16x + 139。 //周期性變化的時鐘,半個周期為50M/(9600*16*2)=163個系統(tǒng)時鐘;0~162共計163個時鐘; t_16x = 939。d0。d0。 end always (posedge sys_clk or negedge rst_n) begin // 這一段用來設置過采樣的時鐘,clk16x是baud9600的16倍,用來檢測起始位和結束位。d0。d1。 else if (t == 2603) //經過8個clk16x周期,就是中點。 end always (posedge sys_clk or negedge rst_n) begin //這一段用來設置采樣中間值 if (! rst_n ) clk_bps_r = 139。d1。d0 。 else if (t == 5207 || !bps_start) //這里是用來設置什么條件下啟動計數(shù)器,目的有兩個,一個是在“過采樣”的時候,提取16倍頻的時鐘,一個是用來定位clk_bps中點采樣信號。 //中間采樣點的計數(shù)分頻值 always (posedge sys_clk or negedge rst_n) begin if ( !rst_n ) t = 1339。 //用來16倍baud的計數(shù)器 `define BAUD_SPEED 5207 。 //內部計數(shù)器,13位最大值8192,用來循環(huán)產生clk_bps。 //內部緩沖寄存器,用來給輸出引腳clk_bps賦值 reg clk16x_r。 //輸出的采樣中點信號,根據UART原理,在檢測到起始位后,隨后的8位數(shù)據位,全部在中點采樣,這樣可以得到穩(wěn)定的信號值 output clk16x。 //全局復位信號,下降沿有效 input bps_start。 input sys_clk。 //發(fā)送端口聲明 uart_tx uu_uart_tx ( .clk16x2(clk16x_tx), .rst_n2 (rst_n), .bps_start2(bps_start_tx), .clk_bps2(clk_bps_tx), .tx(tx), .tx_data(data), .tx_en(tx_en) )。 //接收端口聲明 uart_rx uu_uart_rx ( .clk16x1(clk16x_rx), .rst_n1 (rst_n), .bps_start1(bps_start_rx), .clk_bps1(clk_bps_rx), .rx(rx), .rx_data(data), .led(led) )。 //同上; wire [7:0] data。 //兩個連線,分別用來連接兩個模塊與其是時鐘部分; wire clk_bps_rx,clk_bps_tx。 //串行輸出端口; output [7:0] led。 //串行輸入端口; input tx_en。 input rst_n。 input sys_clk。為0時表示還沒有發(fā)送完一幀數(shù)據。由發(fā)送數(shù)據緩沖器傳給發(fā)送移位寄存器主要由信號TSRE控制。在數(shù)據發(fā)送過程中用輸出信號TBRE,TSRE作為標志信號。發(fā)送器功能仿真結果如圖3所示。首先傳送一位起始位0,然后根據幀結構中定義的數(shù)據長度,分別串行移出TSR[7..0]中的數(shù)據,數(shù)據的低位在前,高位在后。由CPU送來的待發(fā)送的并行數(shù)據,首先寫入發(fā)送緩沖器TBR[7..0]。發(fā)送模塊的引腳如圖2所示,各引腳功能見表1。狀態(tài)機送完停止位后回到X_IDLE狀態(tài),并等待另一個數(shù)據幀的發(fā)送命令。轉換完成立即回到X_WAIT狀態(tài)。XCNT16是bclk的計數(shù)器X_WAIT狀態(tài)同UART接收狀態(tài)機中的R_WAIT狀態(tài)類似。X_START狀態(tài):在這個狀態(tài)下,UART發(fā)送一個位時間寬度的邏輯0信號至TXD,即起始位。在此對XMIT_CMD進行了脈沖寬度的限定,XMIT_CMD_P就是一個處理后的信號。XMIT_CMD_P信號是對XMIT_CMD的處理,XMIT_CMD_P是一個短脈沖信號。X_IDLE狀態(tài):當UART被復位信號復位后,狀態(tài)機將立刻進入這一狀態(tài)。在本設計中沒有校驗位,但只要改變Generic參數(shù)FrameLen,也可以加入校驗位,停止位是固定的1位格式。二進制數(shù)11101010從引腳RXD串行輸入,接收器先要捕捉起始位,在RDN信號為0條件下,啟動接收程序,計數(shù)器開始計數(shù),數(shù)據從RXD[7..0]串行輸入,由接收移位寄存器RSR[7..0]逐位移位接收,并在接收完成時傳送給接收緩沖寄存器RBR[7..0],最后接收緩沖寄存器RBR[7..0]將接收的數(shù)據傳送至DOUT[7..0],由它并行輸出,同時輸出一個接收數(shù)據準備好信號DATA _RE標志數(shù)據接收完畢。接收完畢后,DAT_READ置1。接收器進入準備接收數(shù)據狀態(tài),不斷監(jiān)視串行輸入線RXD端,如果出現(xiàn)低電平,立刻啟動起始位檢測電路進行確認,一旦確認為接收到正確的起始位,則以波特率作為采樣時鐘,對每個數(shù)據位的中間位置采樣一次,并把采樣到的信息以移位方式送人接收移位寄存器RSR。接收模塊的引腳如圖4所示,各引腳功能見表2。 R_STOP狀態(tài),或是2位,狀態(tài)機在R_STOP不具體檢測RXD,只是輸出幀接收完畢信號(REC_DONE=‘1’),停止位后狀態(tài)機轉回到R_START狀態(tài),等待下一個幀的起始位。FRAMELEN在設計時是可更改的(使用了Generic),在本設計中默認為8,即對應的UART工作在8位數(shù)據位、無校驗位格式。這種干擾脈沖的周期是很短的,所以可以認為保持邏輯0超過1/4個位時
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1