久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5329|回復(fù): 0
收起左側(cè)

基于FPGA的串口發(fā)送與接收設(shè)計(jì) 含源碼

[復(fù)制鏈接]
ID:384610 發(fā)表于 2018-8-9 14:41 | 顯示全部樓層 |閱讀模式
本實(shí)驗(yàn)是在特權(quán)CY-4開發(fā)板的基礎(chǔ)上實(shí)現(xiàn)的,附件包含了源碼的設(shè)計(jì)。
代碼里主要有波特率設(shè)置模塊、發(fā)送模塊、接收模塊。
0.png

源程序如下:
  1. /////////////////////////////////////////////////////////////////////////////
  2. //Altera ATPP合作伙伴 至芯科技 攜手 特權(quán)同學(xué) 共同打造 FPGA開發(fā)板系列
  3. //工程硬件平臺(tái): Altera Cyclone IV FPGA
  4. //開發(fā)套件型號(hào): SF-CY4 特權(quán)打造
  5. //版   權(quán)  申   明: 本例程由《深入淺出玩轉(zhuǎn)FPGA》作者“特權(quán)同學(xué)”原創(chuàng),
  6. //                                僅供SF-CY4開發(fā)套件學(xué)習(xí)使用,謝謝支持
  7. /////////////////////////////////////////////////////////////////////////////
  8. //項(xiàng)目名稱:串口lookback測(cè)試項(xiàng)目
  9. //子模塊:串口接收模塊
  10. //功能:
  11. module my_uart_rx(
  12.                                 clk,rst_n,
  13.                                 uart_rx,rx_data,rx_int,
  14.                                 clk_bps,bps_start
  15.                         );

  16. input clk;                // 25MHz主時(shí)鐘
  17. input rst_n;        //低電平復(fù)位信號(hào)
  18. input uart_rx;        // RS232接收數(shù)據(jù)信號(hào)
  19. input clk_bps;        // clk_bps的高電平為接收或者發(fā)送數(shù)據(jù)位的中間采樣點(diǎn)
  20. output bps_start;                //接收到數(shù)據(jù)后,波特率時(shí)鐘啟動(dòng)信號(hào)置位
  21. output[7:0] rx_data;        //接收數(shù)據(jù)寄存器,保存直至下一個(gè)數(shù)據(jù)來(lái)到
  22. output rx_int;        //接收數(shù)據(jù)中斷信號(hào),接收到數(shù)據(jù)期間始終為高電平

  23. //----------------------------------------------------------------
  24. reg uart_rx0,uart_rx1,uart_rx2,uart_rx3;        //接收數(shù)據(jù)寄存器,濾波用
  25. wire neg_uart_rx;        //表示數(shù)據(jù)線接收到下降沿

  26. always @ (posedge clk or negedge rst_n)
  27.         if(!rst_n) begin
  28.                 uart_rx0 <= 1'b0;
  29.                 uart_rx1 <= 1'b0;
  30.                 uart_rx2 <= 1'b0;
  31.                 uart_rx3 <= 1'b0;
  32.         end
  33.         else begin
  34.                 uart_rx0 <= uart_rx;
  35.                 uart_rx1 <= uart_rx0;
  36.                 uart_rx2 <= uart_rx1;
  37.                 uart_rx3 <= uart_rx2;
  38.         end

  39.         //下面的下降沿檢測(cè)可以濾掉<40ns-80ns的毛刺(包括高脈沖和低脈沖毛刺),
  40.         //這里就是用資源換穩(wěn)定(前提是我們對(duì)時(shí)間要求不是那么苛刻,因?yàn)檩斎胄盘?hào)打了好幾拍)
  41.         //(當(dāng)然我們的有效低脈沖信號(hào)肯定是遠(yuǎn)遠(yuǎn)大于80ns的)
  42. assign neg_uart_rx = uart_rx3 & uart_rx2 & ~uart_rx1 & ~uart_rx0;        //接收到下降沿后neg_uart_rx置高一個(gè)時(shí)鐘周期

  43. //----------------------------------------------------------------
  44. reg bps_start_r;
  45. reg[3:0] num;        //移位次數(shù)
  46. reg rx_int;                //接收數(shù)據(jù)中斷信號(hào),接收到數(shù)據(jù)期間始終為高電平

  47. always @ (posedge clk or negedge rst_n)
  48.         if(!rst_n) begin
  49.                 bps_start_r <= 1'bz;
  50.                 rx_int <= 1'b0;
  51.         end
  52.         else if(neg_uart_rx) begin                //接收到串口接收線uart_rx的下降沿標(biāo)志信號(hào)
  53.                 bps_start_r <= 1'b1;        //啟動(dòng)串口準(zhǔn)備數(shù)據(jù)接收
  54.                 rx_int <= 1'b1;                        //接收數(shù)據(jù)中斷信號(hào)使能
  55.         end
  56.         else if(num == 4'd9) begin                //接收完有用數(shù)據(jù)信息
  57.                 bps_start_r <= 1'b0;        //數(shù)據(jù)接收完畢,釋放波特率啟動(dòng)信號(hào)
  58.                 rx_int <= 1'b0;                        //接收數(shù)據(jù)中斷信號(hào)關(guān)閉
  59.         end

  60. assign bps_start = bps_start_r;

  61. //----------------------------------------------------------------
  62. reg[7:0] rx_data_r;                //串口接收數(shù)據(jù)寄存器,保存直至下一個(gè)數(shù)據(jù)來(lái)到
  63. reg[7:0] rx_temp_data;        //當(dāng)前接收數(shù)據(jù)寄存器

  64. always @ (posedge clk or negedge rst_n)
  65.         if(!rst_n) begin
  66.                 rx_temp_data <= 8'd0;
  67.                 num <= 4'd0;
  68.                 rx_data_r <= 8'd0;
  69.         end
  70.         else if(rx_int) begin        //接收數(shù)據(jù)處理
  71.                 if(clk_bps) begin        //讀取并保存數(shù)據(jù),接收數(shù)據(jù)為一個(gè)起始位,8bit數(shù)據(jù),1或2個(gè)結(jié)束位               
  72.                         num <= num+1'b1;
  73.                         case (num)
  74.                                 4'd1: rx_temp_data[0] <= uart_rx;        //鎖存第0bit
  75.                                 4'd2: rx_temp_data[1] <= uart_rx;        //鎖存第1bit
  76.                                 4'd3: rx_temp_data[2] <= uart_rx;        //鎖存第2bit
  77.                                 4'd4: rx_temp_data[3] <= uart_rx;        //鎖存第3bit
  78.                                 4'd5: rx_temp_data[4] <= uart_rx;        //鎖存第4bit
  79.                                 4'd6: rx_temp_data[5] <= uart_rx;        //鎖存第5bit
  80.                                 4'd7: rx_temp_data[6] <= uart_rx;        //鎖存第6bit
  81.                                 4'd8: rx_temp_data[7] <= uart_rx;        //鎖存第7bit
  82.                                 default: ;
  83.                         endcase
  84.                 end
  85.                 else if(num == 4'd9) begin                //我們的標(biāo)準(zhǔn)接收模式下只有1+8+1(2)=11bit的有效數(shù)據(jù)
  86.                         num <= 4'd0;                            //接收到STOP位后結(jié)束,num清零
  87.                         rx_data_r <= rx_temp_data;        //把數(shù)據(jù)鎖存到數(shù)據(jù)寄存器rx_data中
  88.                 end
  89.         end

  90. assign rx_data = rx_data_r;       

  91. endmodule
復(fù)制代碼

所有資料51hei提供下載:
UART_TXRX.rar (6.68 MB, 下載次數(shù): 66)



評(píng)分

參與人數(shù) 1黑幣 +18 收起 理由
外星人11111 + 18

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色一级免费视频 | 99cao| 在线播放a| 亚洲视频二区 | 久久黄色免费视频 | 日韩成人在线播放 | 免费看一级黄色片 | 在线观看欧美日韩视频 | 日韩国产中文字幕 | 成人免费在线观看网站 | 国产伦理一区 | 人人看人人草 | 国产成人亚洲精品自产在线 | 天天操网 | 久久免费看视频 | 久久大 | 日韩一级片视频 | 国产黄色精品视频 | 色婷婷一区二区三区四区 | 成人av一区| 日韩欧美不卡 | 欧美日韩性 | 亚洲成人免费在线观看 | 全部免费毛片在线播放高潮 | 日本a级在线 | 亚州精品视频 | 欧美草草| 亚洲第十页 | 一区二区福利 | 六十路av | 日韩视频免费观看 | 中文字幕一区二区在线播放 | 国产成人精品毛片 | 日韩精品一级 | 成人免费精品 | 国产乱人伦 | jlzzzjlzzz国产免费观看 | 在线看日韩| 日日操视频 | 丝袜美腿亚洲综合 | 国产精品成人国产乱一区 |