⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 txmit.v

📁 一个UART的FPGA core
💻 V
字号:
`timescale 1 ns / 100psmodule txmit ( clk,clk_in,rst,data,we,baud_clk,               sdo,EF,AE,AF,FF,we_en               ) ;  //发送模块output sdo ;//serial data outputoutput EF,AE,AF,FF; input [7:0] data;input clk , rst,clk_in ;input we ;  //FIFO片选信号input baud_clk;   //串口传送波特率时钟output we_en;//reg tsre ; //标志位,标志tsr为空//reg baud_clk_enable;wire [7:0] tsr_tmp ; //作移位输出到SDO使用reg [7:0] tsr;reg sdo ;reg [3:0] no_bits_sent ;   //控制串出数据顺序//wire [7:0] q;reg rd;wire  EF,AE,AF,FF;reg tmp; //[2:0] tmp;reg we_en;reg tmp1;always @(posedge clk) begin                      tmp = we ; //tmp <= tmp + 1 ;                      endalways @(posedge clk) begin                      tmp1 = tmp; //tmp <= tmp + 1 ;                      endalways @(posedge clk) begin                      we_en = !FF & !we & tmp1;                      end//always @(posedge tmp[1]) tmp1 <= we ;//we_en = !FF & !we & tmp1;UART_FIFO u0( .clk( clk ),              .rst( rst ),              .data_in( data ),	      .data_out( tsr_tmp ),	      .push( we_en ),	      .pop( rd&!EF ),	      .EF( EF ),	      .AE( AE ),	      .AF( AF ),	      .FF( FF ));always @(posedge baud_clk or posedge rst)if (rst)     begin             sdo <= 1'b1 ;             tsr <= 8'b0 ;             endelse   if(!EF)      begin  if(no_bits_sent == 4'b0001) tsr <= tsr_tmp;                    else if( no_bits_sent == 4'b0010 ) sdo <= 0 ;                    else if ((no_bits_sent >= 4'b0011) && (no_bits_sent <= 4'b1010))                    begin                    tsr[6:0] <= tsr[7:1] ;                    tsr[7] <= 1'b0 ;                    sdo <= tsr[0] ; //串出数据bit 0,bit 1,...bit 7                    end                    else  sdo<= 1'b1;//if (no_bits_sent == 4'b1011)  sdo <= 1'b1 ;             end       else sdo <= 1'b1;reg state ;always @(posedge clk or posedge rst)  if(rst)   begin            state <= 0;            rd <= 0 ;        end  else  begin           case(state)		0 : if( (no_bits_sent == 4'b0010) && !EF ) 		       begin		              rd <= 1;				  state <= 1 ; 			  end                1 : begin		              rd <= 0 ;                       if( no_bits_sent == 4'b0000)                               state <= 0;		     end            endcase        endalways @(posedge baud_clk or posedge rst )if (rst)    no_bits_sent <= 4'b0000 ;else if ( ((no_bits_sent == 4'b1011) | EF) )              no_bits_sent <= 4'b0000 ;     else  	         no_bits_sent <= no_bits_sent + 1 ; //第一拍,导入数据到tsr,第二拍,输出起始3,第三拍-第10拍,串出数据,第11拍,输出奇偶校验位endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -