亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
基于FPGA的串口發送與接收設計 含源碼
[打印本頁]
作者:
JasonAn
時間:
2018-8-9 14:41
標題:
基于FPGA的串口發送與接收設計 含源碼
本實驗是在特權CY-4開發板的基礎上實現的,附件包含了源碼的設計。
代碼里主要有波特率設置模塊、發送模塊、接收模塊。
0.png
(44.8 KB, 下載次數: 72)
下載附件
2018-8-9 14:46 上傳
源程序如下:
/////////////////////////////////////////////////////////////////////////////
//Altera ATPP合作伙伴 至芯科技 攜手 特權同學 共同打造 FPGA開發板系列
//工程硬件平臺: Altera Cyclone IV FPGA
//開發套件型號: SF-CY4 特權打造
//版 權 申 明: 本例程由《深入淺出玩轉FPGA》作者“特權同學”原創,
// 僅供SF-CY4開發套件學習使用,謝謝支持
/////////////////////////////////////////////////////////////////////////////
//項目名稱:串口lookback測試項目
//子模塊:串口接收模塊
//功能:
module my_uart_rx(
clk,rst_n,
uart_rx,rx_data,rx_int,
clk_bps,bps_start
);
input clk; // 25MHz主時鐘
input rst_n; //低電平復位信號
input uart_rx; // RS232接收數據信號
input clk_bps; // clk_bps的高電平為接收或者發送數據位的中間采樣點
output bps_start; //接收到數據后,波特率時鐘啟動信號置位
output[7:0] rx_data; //接收數據寄存器,保存直至下一個數據來到
output rx_int; //接收數據中斷信號,接收到數據期間始終為高電平
//----------------------------------------------------------------
reg uart_rx0,uart_rx1,uart_rx2,uart_rx3; //接收數據寄存器,濾波用
wire neg_uart_rx; //表示數據線接收到下降沿
always @ (posedge clk or negedge rst_n)
if(!rst_n) begin
uart_rx0 <= 1'b0;
uart_rx1 <= 1'b0;
uart_rx2 <= 1'b0;
uart_rx3 <= 1'b0;
end
else begin
uart_rx0 <= uart_rx;
uart_rx1 <= uart_rx0;
uart_rx2 <= uart_rx1;
uart_rx3 <= uart_rx2;
end
//下面的下降沿檢測可以濾掉<40ns-80ns的毛刺(包括高脈沖和低脈沖毛刺),
//這里就是用資源換穩定(前提是我們對時間要求不是那么苛刻,因為輸入信號打了好幾拍)
//(當然我們的有效低脈沖信號肯定是遠遠大于80ns的)
assign neg_uart_rx = uart_rx3 & uart_rx2 & ~uart_rx1 & ~uart_rx0; //接收到下降沿后neg_uart_rx置高一個時鐘周期
//----------------------------------------------------------------
reg bps_start_r;
reg[3:0] num; //移位次數
reg rx_int; //接收數據中斷信號,接收到數據期間始終為高電平
always @ (posedge clk or negedge rst_n)
if(!rst_n) begin
bps_start_r <= 1'bz;
rx_int <= 1'b0;
end
else if(neg_uart_rx) begin //接收到串口接收線uart_rx的下降沿標志信號
bps_start_r <= 1'b1; //啟動串口準備數據接收
rx_int <= 1'b1; //接收數據中斷信號使能
end
else if(num == 4'd9) begin //接收完有用數據信息
bps_start_r <= 1'b0; //數據接收完畢,釋放波特率啟動信號
rx_int <= 1'b0; //接收數據中斷信號關閉
end
assign bps_start = bps_start_r;
//----------------------------------------------------------------
reg[7:0] rx_data_r; //串口接收數據寄存器,保存直至下一個數據來到
reg[7:0] rx_temp_data; //當前接收數據寄存器
always @ (posedge clk or negedge rst_n)
if(!rst_n) begin
rx_temp_data <= 8'd0;
num <= 4'd0;
rx_data_r <= 8'd0;
end
else if(rx_int) begin //接收數據處理
if(clk_bps) begin //讀取并保存數據,接收數據為一個起始位,8bit數據,1或2個結束位
num <= num+1'b1;
case (num)
4'd1: rx_temp_data[0] <= uart_rx; //鎖存第0bit
4'd2: rx_temp_data[1] <= uart_rx; //鎖存第1bit
4'd3: rx_temp_data[2] <= uart_rx; //鎖存第2bit
4'd4: rx_temp_data[3] <= uart_rx; //鎖存第3bit
4'd5: rx_temp_data[4] <= uart_rx; //鎖存第4bit
4'd6: rx_temp_data[5] <= uart_rx; //鎖存第5bit
4'd7: rx_temp_data[6] <= uart_rx; //鎖存第6bit
4'd8: rx_temp_data[7] <= uart_rx; //鎖存第7bit
default: ;
endcase
end
else if(num == 4'd9) begin //我們的標準接收模式下只有1+8+1(2)=11bit的有效數據
num <= 4'd0; //接收到STOP位后結束,num清零
rx_data_r <= rx_temp_data; //把數據鎖存到數據寄存器rx_data中
end
end
assign rx_data = rx_data_r;
endmodule
復制代碼
所有資料51hei提供下載:
UART_TXRX.rar
(6.68 MB, 下載次數: 66)
2018-8-9 14:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1