在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

解析常用串行總線——UART協議(下)

jf_78858299 ? 來源:Cascatrix ? 作者:Carson ? 2023-01-21 16:53 ? 次閱讀

2. 接收模塊 (uart_rx):

module uart_rx (

clk_40k, //clock signal, 40kHz

rst_n, //reset signal, active low

bit_in, //the input serial bit,

dout_vld,//the output valid signal, active high,the dout is valid when this signal is high.

dout //received data, 8 bit width

);

input bit_in;

input clk_40k;

input rst_n;

output reg dout_vld;

output reg [7:0] dout;

reg rx_flag;

reg [6:0] cnt;

reg [5:0] rx_cnt;

reg [7:0] dout_temp;

//rx_flag: 接收過程rx_flag始終拉高

always @ (posedge clk_40k)

begin

if(~rst_n)

rx_flag <= 1'b0;

else if(bit_in == 1'b0)

rx_flag <= 1'b1;

else if(rx_cnt == 6'd9)

rx_flag <= 1'b0;

end

//cnt: 接收數據計數,clk_40k分頻至1k波特率對接收數據進行計數

always @ (posedge clk_40k)

begin

if(~rst_n)

cnt <= 7'b0;

else if(rx_flag == 1'b1 && cnt != 7'd39)

cnt <= cnt + 1'b1;

else if(rx_flag == 1'b0 || cnt == 7'd39)

cnt <= 7'b0;

end

always @ (posedge clk_40k)

begin

if(~rst_n)

rx_cnt <= 6'b0;

else if(rx_flag == 1'b1 && cnt == 7'd39)

rx_cnt <= rx_cnt + 1'b1;

else if(rx_flag == 1'b0)

rx_cnt <= 6'b0;

end

//dout_temp: 將串行接收數據轉換還原為8bit數據

always @ (posedge clk_40k)

begin

if(~rst_n)

dout_temp <= 8'b0;

else if(rx_flag == 1'b1 && cnt == 7'd39)

begin

dout_temp[7] <= bit_in;

dout_temp[6:0] <= dout_temp[7:1];

end

end

//dout_vld: 傳輸完成標識,8bit數據傳輸結束拉高

always @ (posedge clk_40k)

begin

if(~rst_n)

dout_vld <= 1'b0;

else if(rx_cnt == 6'd9 && cnt == 7'b0)

begin

dout <= dout_temp;

dout_vld <= 1'b1;

end

else

dout_vld <= 1'b0;

end

endmodule

3. Testbench(tb):

`timescale 1us/1us

module tb();

reg clk_40k;

reg rst_n;

reg [7:0] din;

reg send_start;

wire bit_out;

wire bit_in;

wire dout_vld;

wire [7:0] dout;

assign bit_in = bit_out;

uart_tx i_uart_tx(

.clk_40k (clk_40k ),

.rst_n (rst_n ),

.din (din ),

.send_start (send_start),

.bit_out (bit_out )

);

uart_rx i_uart_rx(

.clk_40k (clk_40k ),

.rst_n (rst_n ),

.bit_in (bit_in ),

.dout_vld (dout_vld ),

.dout (dout )

);

initial

begin

rst_n = 1'b0;

#10

rst_n = 1'b1;

end

initial

begin

clk_40k = 1'b0;

forever

#1

clk_40k = ~clk_40k;

end

initial

begin

send_start = 1'b0;

din = 8'd0;

forever

begin

    #1000

    din = $random()%256;

    send_start = 1'b1;

    #2

    send_start = 1'b0;

end

end

endmodule

4. 仿真結果 :

按照testbench對UART收發端進行仿真,仿真結果如圖:

圖片

  1. 系統時鐘和傳輸速率通常不一致,clk_40k為高頻系統時鐘,利用計數器分頻實現1k波特率;
  2. 復位信號rst_n低電平有效,正常傳輸時始終處于高電平。
  3. 開始傳輸時send_start信號拉高,傳輸結束時dout_vld信號拉高;
  4. 輸入數據din在傳輸結束后在輸出數據dout體現出來,傳輸時延為1個數據長度。

04

UART的優缺點

4.1 UART協議優點

  1. 通信只需要兩條數據線;
  2. 無需時鐘信號;
  3. 有奇偶校驗位,方便通信的差錯檢查;
  4. 只需要接收端和發送端設置好數據包結構,即可穩定通信。

4.2 UART協議缺點

  1. 數據幀最大支持9位數據;
  2. 不支持多主機或多從機的主從系統。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 串行
    +關注

    關注

    0

    文章

    237

    瀏覽量

    34070
  • uart
    +關注

    關注

    22

    文章

    1246

    瀏覽量

    102170
  • 通訊接口
    +關注

    關注

    2

    文章

    80

    瀏覽量

    16301
收藏 人收藏

    評論

    相關推薦

    常用的串口通信協議UART異步串行通信簡析

    UART是異步串行通信口的總稱。它所包含的RS232RS449RS423等等是對應各種異步串行通信口的接口標準和總線標準。他們規定了通信口的電氣特性、傳輸速率、連接特性和機械特性等一系
    發表于 07-10 09:06 ?3367次閱讀

    常用串行總線(一)——UART協議(Verilog實現)

    通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART。它將要傳輸的資料在串行通信與并行通信之間加以轉換。作為把并行輸入信號轉成串行輸出信號的芯片,
    發表于 01-05 09:48 ?4095次閱讀

    UART串口通訊協議解析

    ,協議如下: 起始位 數據位 奇偶校驗位 停止位 1bit 5-9bit 0-1bit 1-2bit 空閑位 :UART協議規定,當總線處于空閑狀態時信號線的狀態為‘1’即高電平,表示
    發表于 09-12 16:01

    SPI、I2C、UART三種串行總線協議的區別

    實現從設備,則只需輸入口即可。I2C總線是雙向、兩線(SCL、SDA)、串行、多主控(multi-master)接口標準,具有總線仲裁機制,非常適合在器件之間進行近距離、非經常性的數據通信。在它的
    發表于 11-02 09:48

    UART串口通訊協議是什么

    UART串口通訊協議解析概述接口通信協議概述通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作
    發表于 07-29 08:07

    常用串行總線協議有哪些

    一、常用串行總線協議目前常用的微機與外設之間進行數據傳輸的串行
    發表于 11-03 07:14

    常用串行總線協議有哪些

    常用串行總線協議I2C總線、SPI總線、SCI總線
    發表于 11-19 06:46

    串行通信中的IIC總線工作原理是什么

    串行通信中的IIC總線工作原理51本身不帶IIC總線 ,使用程序模擬IIC通信協議常用串行
    發表于 12-08 07:52

    SPI、I2C、UART串行總線協議

    串口通訊通信協議UART,以及常用外設通信協議 SPI、I2C的介紹與他們之間的區別
    發表于 11-30 11:28 ?95次下載

    SPI、I2C、UART三種串行總線協議的區別

    SPI、I2C、UART三種串行總線協議的區別
    發表于 07-17 17:23 ?0次下載

    解析常用串行總線——UART協議(上)

    通用異步收發傳輸器** (Universal Asynchronous Receiver/Transmitter),通常稱作UART。它將要傳輸的資料在串行通信與并行通信之間加以轉換。作為把并行輸入信號轉成串行輸出信號的芯片,
    的頭像 發表于 01-21 16:50 ?2019次閱讀
    <b class='flag-5'>解析</b><b class='flag-5'>常用</b><b class='flag-5'>串行</b><b class='flag-5'>總線</b>——<b class='flag-5'>UART</b><b class='flag-5'>協議</b>(上)

    常用串行總線——SPI協議()

    SPI(Serial Perripheral Interface, 串行外圍設備接口)** 是 Motorola 公司推出的一種同步串行接口技術。SPI 總線在物理上是通過接在外圍設備微控制器
    的頭像 發表于 01-21 17:03 ?1074次閱讀
    <b class='flag-5'>常用</b><b class='flag-5'>串行</b><b class='flag-5'>總線</b>——SPI<b class='flag-5'>協議</b>(<b class='flag-5'>下</b>)

    討論使用UART通信協議的基本原則

    UART,即通用異步接收器/發送器,是最常用的設備間通信協議之一,正確配置后,UART可以配合許多不同類型的涉及發送和接收串行數據的
    的頭像 發表于 02-01 17:54 ?1152次閱讀

    UART協議的工作原理和應用場景

    UART(Universal Asynchronous Receiver/Transmitter,通用異步收發傳輸器)協議是一種廣泛使用的串行通信協議,它允許計算機與外部設備之間通過
    的頭像 發表于 08-25 17:15 ?4371次閱讀

    UART通信協議介紹和數據傳輸工作流程

    UART是一種通用串行數據總線,用于異步通信。該總線雙向通信,可實現全雙工傳輸和接收。UART常用
    的頭像 發表于 10-24 14:20 ?1240次閱讀
    <b class='flag-5'>UART</b>通信<b class='flag-5'>協議</b>介紹和數據傳輸工作流程
    主站蜘蛛池模板: 李丽莎尤物福利视频 | 天天弄天天干 | 美女视频黄色的免费 | 天天综合五月天 | 欧洲国产精品精华液 | 久久久婷婷亚洲5月97色 | 在线jlzzjlzz免费播放 | 成年网站在线看 | 亚洲成a人片77777潘金莲 | 五月天激情在线 | 欧美精彩狠狠色丁香婷婷 | 成人网在线观看 | 亚洲影视久久 | 56pao强力打造 | 好硬好湿好爽再深一点h视频 | 日韩精品一区二区在线观看 | 深夜国产成人福利在线观看女同 | 欧美日韩国产一区二区 | 91福利免费视频 | 日本人的色道免费网站 | 久久精品亚洲精品国产色婷 | 加勒比日本道 | 未成人禁止视频高清在线观看 | 免费一级特黄 欧美大片 | 国产精品福利一区二区亚瑟 | 国产成人精品午夜二三区 | 情久久 | 亚洲成a人片在线看 | 5566成人免费视频观看 | 波多野结衣在线视频观看 | 婷婷综合七月激情啪啪 | 种子天堂bt磁力在线资源 | 人人人人澡 | 四虎国产视频 | 香蕉操 | 成人免费一区二区三区 | 二级黄绝大片中国免费视频0 | 色婷五月 | 人人澡人人澡碰人人看软件 | 94久久国产乱子伦精品免费 | 色综合视频 |