10通訊入門之串列埠傳送

2022-09-11 15:21:21 字數 2255 閱讀 2021

一設計功能

通過串列埠傳送端,可以傳送一位元組的資料。有輸入標誌訊號和傳送完成的標誌訊號進行控制傳送過程,核心是傳送的時序圖。串列埠傳送分成兩個部分:串列埠波特率和串列埠資料傳送。即空閒時的高電平和起始位,八位資料位,停止位。

二設計輸入

下面的程式**是從上到下,從最基本的時鐘開始,分頻計數器,分頻標誌訊號,波特率,資料位,和輸出資料訊號,輸出標誌訊號。

module uart_tx

(input wire sclk,

input wire s_rst_n,

input wire [7:0]pi_data,

input wire pi_flag,

output reg tx

);reg [3:0]bit_cnt;

reg bit_flag;

//data reg

reg [7:0]data_reg;

always@(posedge sclk or negedge s_rst_n)

if(s_rst_n==0)

data_reg<=8'b0;

else if(pi_data)

data_reg<=pi_data;

else begin

data_reg<=data_reg;

end//tx_flag

reg tx_flag;

always@(posedge sclk or negedge s_rst_n)

if(s_rst_n==0)

tx_flag <= 0;

else if(pi_flag)

tx_flag<=1;

else if(bit_cnt==4'd8 & bit_flag)

tx_flag<=0;

else begin

tx_flag<=tx_flag;

end//baud counter

parameter cnt_max = 13'd5208;

reg [12:0]cnt_baud;

always@(posedge sclk or negedge s_rst_n)

if(!s_rst_n)

cnt_baud<=13'd0;

else if(cnt_baud==cnt_max)

cnt_baud<=13'd0;

else if(bit_cnt==4'd8 & bit_flag)

cnt_baud<=13'd0;

else if(tx_flag)

cnt_baud<=cnt_baud+1'b1;

//bit_flag

//波特率標誌訊號,每計數滿乙個波特率週期拉高

always@(posedge sclk or negedge s_rst_n)

if(s_rst_n==0)

bit_flag<=1'b0;

else if(cnt_baud==cnt_max)

bit_flag<=1'b1;

else begin

bit_flag<=0;

end//bit_cnt

always@(posedge sclk or negedge s_rst_n)

if(s_rst_n==0)

bit_cnt<=4'd0;

else if(bit_cnt==4'd8 & bit_flag)

bit_cnt<=4'd0;

else if(bit_flag)

bit_cnt<=bit_cnt+1'b1;

always@(posedge sclk or negedge s_rst_n)

if(s_rst_n==0)

tx<=1'b1;

else begin

case(bit_cnt)

0:tx <=0;

1:tx <=data_reg[0];

2:tx <=data_reg[1];

3:tx <=data_reg[2];

4:tx <=data_reg[3];

5:tx <=data_reg[4];

6:tx <=data_reg[5];

7:tx <=data_reg[6];

8:tx <=data_reg[7];

default:tx <=1;

endcase

endendmodule

根據傳送時序圖,寫的串列埠傳送模組。

11 1 通訊錄的錄入與顯示 10

通訊錄中的一條記錄包含下述基本資訊 朋友的姓名 出生日期 性別 固定 號碼 移動 號碼。本題要求編寫程式,錄入n條記錄,並且根據要求顯示任意某條記錄。輸入格式 輸入在第1行給出正整數n 10 隨後n行,每行按照格式 姓名 生日 性別 固話 手機 給出一條記錄。其中 姓名 是不超過10個字元 不包含空...

11 1 通訊錄的錄入與顯示 10

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 喬林 清華大學 通訊錄中的一條記錄包含下述基本資訊 朋友的姓名 出生日期 性別 固定 號碼 移動 號碼。本題要求編寫程式,錄入n條記錄,並且根據要求顯示任意某條記錄。輸入格式 輸入在第1行...

5 34 通訊錄的錄入與顯示 10分

5 34 通訊錄的錄入與顯示 10分 通訊錄中的一條記錄包含下述基本資訊 朋友的姓名 出生日期 性別 固定 號碼 移動 號碼。本題要求編寫程式,錄入n n條記錄,並且根據要求顯示任意某條記錄。輸入在第一行給出正整數n n le 10 隨後n n行,每行按照格式姓名 生日 性別 固話 手機給出一條記錄...