日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > ZYNQ


0:起始位,低電平;1~8:數(shù)據(jù)位;9:校驗(yàn)位,高電平;10:停止位,高電平。

波特率 “9600bps”表示每秒可以傳輸9600位。

波特率定時(shí)計(jì)數(shù)器由時(shí)鐘頻率除以波特率。

采集1~8位,忽略0、9、10位。

發(fā)送“0、8位數(shù)據(jù)、1、1”

串口傳輸數(shù)據(jù),從最低位開始,到最高位結(jié)束。

串口發(fā)送:

module tx_bps_module( CLK, RSTn, Count_Sig, BPS_CLK);  input CLK; input RSTn; input Count_Sig; output BPS_CLK;  /***************************/   reg [12:0]Count_BPS;  always @ ( posedge CLK or negedge RSTn ) if( !RSTn ) Count_BPS <= 13'd0; else if( Count_BPS == 13'd5207 ) Count_BPS <= 13'd0; else if( Count_Sig ) Count_BPS <= Count_BPS + 1'b1; else  Count_BPS <= 13'd0;  /********************************/   assign BPS_CLK = ( Count_BPS == 13'd2604 ) ? 1'b1 : 1'b0;  /*********************************/  endmodule 


  module tx_control_module( CLK, RSTn, TX_En_Sig, TX_Data, BPS_CLK, TX_Done_Sig, TX_Pin_Out );  input CLK; input RSTn;  input TX_En_Sig; input [7:0]TX_Data; input BPS_CLK;  output TX_Done_Sig; output TX_Pin_Out;  /********************************************************/   reg [3:0]i; reg rTX; reg isDone;  always @ ( posedge CLK or negedge RSTn ) if( !RSTn ) begin  i <= 4'd0; rTX <= 1'b1; isDone     <= 1'b0; end  else if( TX_En_Sig ) case ( i )  4'd0 : if( BPS_CLK ) begin i <= i + 1'b1; rTX <= 1'b0; end   4'd1, 4'd2, 4'd3, 4'd4, 4'd5, 4'd6, 4'd7, 4'd8 : if( BPS_CLK ) begin i <= i + 1'b1; rTX <= TX_Data[ i - 1 ]; end  4'd9 : if( BPS_CLK ) begin i <= i + 1'b1; rTX <= 1'b1; end   4'd10 : if( BPS_CLK ) begin i <= i + 1'b1; rTX <= 1'b1; end   4'd11 : if( BPS_CLK ) begin i <= i + 1'b1; isDone <= 1'b1; end   4'd12 : begin i <= 4'd0; isDone <= 1'b0; end   endcase   /********************************************************/   assign TX_Pin_Out = rTX; assign TX_Done_Sig = isDone;  /*********************************************************/  endmodule


module tx_module( CLK, RSTn, TX_Data, TX_En_Sig, TX_Done_Sig, TX_Pin_Out);  input CLK; input RSTn; input [7:0]TX_Data; input TX_En_Sig; output TX_Done_Sig; output TX_Pin_Out;   /********************************/   wire BPS_CLK;  tx_bps_module U1 ( .CLK( CLK ), .RSTn( RSTn ), .Count_Sig( TX_En_Sig ), // input - from U2 .BPS_CLK( BPS_CLK ) // output - to U2 );  /*********************************/   tx_control_module U2 ( .CLK( CLK ), .RSTn( RSTn ), .TX_En_Sig( TX_En_Sig ), // input - from top .TX_Data( TX_Data ), // input - from top .BPS_CLK( BPS_CLK ), // input - from U2 .TX_Done_Sig( TX_Done_Sig ), // output - to top .TX_Pin_Out( TX_Pin_Out ) // output - to top );  /***********************************/  endmodule


串口接收

  module detect_module( CLK, RSTn, RX_Pin_In, H2L_Sig); input CLK; input RSTn; input RX_Pin_In; output H2L_Sig;  /******************************/   reg H2L_F1; reg H2L_F2;  always @ ( posedge CLK or negedge RSTn ) if( !RSTn ) begin  H2L_F1 <= 1'b1; H2L_F2 <= 1'b1; end  else  begin  H2L_F1 <= RX_Pin_In; H2L_F2 <= H2L_F1; end   /***************************************/   assign H2L_Sig = H2L_F2 & !H2L_F1;  /***************************************/  endmodule 


module rx_control_module( CLK, RSTn, H2L_Sig, RX_Pin_In, BPS_CLK, RX_En_Sig, Count_Sig, RX_Data, RX_Done_Sig );  input CLK; input RSTn;  input H2L_Sig; input RX_En_Sig; input RX_Pin_In; input BPS_CLK;  output Count_Sig; output [7:0]RX_Data; output RX_Done_Sig;   /********************************************************/   reg [3:0]i; reg [7:0]rData; reg isCount; reg isDone;  always @ ( posedge CLK or negedge RSTn ) if( !RSTn ) begin  i <= 4'd0; rData <= 8'd0; isCount <= 1'b0; isDone <= 1'b0; end  else if( RX_En_Sig ) case ( i )  4'd0 : if( H2L_Sig ) begin i <= i + 1'b1; isCount <= 1'b1; end /*進(jìn)入第0位,同時(shí)驅(qū)動(dòng)bps_module開始計(jì)數(shù)。又以bps_module驅(qū)動(dòng)狀態(tài)1~11*/  4'd1 : if( BPS_CLK ) begin i <= i + 1'b1; end /*第0位中部,BPS_CLK發(fā)出第一個(gè)脈沖,忽略第0位*/  4'd2, 4'd3, 4'd4, 4'd5, 4'd6, 4'd7, 4'd8, 4'd9 : if( BPS_CLK ) begin i <= i + 1'b1; rData[ i - 2 ] <= RX_Pin_In; end  4'd10 : if( BPS_CLK ) begin i <= i + 1'b1; end  4'd11 : if( BPS_CLK ) begin i <= i + 1'b1; end  4'd12 : begin i <= i + 1'b1; isDone <= 1'b1; isCount <= 1'b0; end  4'd13 : begin i <= 4'd0; isDone <= 1'b0; end   endcase   /********************************************************/   assign Count_Sig = isCount; assign RX_Data = rData; assign RX_Done_Sig = isDone;   /*********************************************************/  endmodule 


module rx_bps_module( CLK, RSTn, Count_Sig, BPS_CLK);  input CLK; input RSTn; input Count_Sig; output BPS_CLK;  /***************************/   reg [12:0]Count_BPS;  always @ ( posedge CLK or negedge RSTn ) if( !RSTn ) Count_BPS <= 13'd0; else if( Count_BPS == 13'd5207 ) Count_BPS <= 13'd0; else if( Count_Sig ) Count_BPS <= Count_BPS + 1'b1; else  Count_BPS <= 13'd0;  /********************************/   assign BPS_CLK = ( Count_BPS == 12'd2604 ) ? 1'b1 : 1'b0;            /*周期中間開始采集數(shù)據(jù)*/  /*********************************/  endmodule 


module rx_module( CLK, RSTn, RX_Pin_In, RX_En_Sig, RX_Done_Sig, RX_Data);  input CLK; input RSTn;  input RX_Pin_In; input RX_En_Sig;  output [7:0]RX_Data; output RX_Done_Sig;   /**********************************/   wire H2L_Sig;  detect_module U1 ( .CLK( CLK ), .RSTn( RSTn ), .RX_Pin_In( RX_Pin_In ), // input - from top .H2L_Sig( H2L_Sig ) // output - to U3 );  /**********************************/   wire BPS_CLK;  rx_bps_module U2 ( .CLK( CLK ), .RSTn( RSTn ), .Count_Sig( Count_Sig ), // input - from U3 .BPS_CLK( BPS_CLK ) // output - to U3 );  /**********************************/   wire Count_Sig;  rx_control_module U3 ( .CLK( CLK ), .RSTn( RSTn ),  .H2L_Sig( H2L_Sig ), // input - from U1 .RX_En_Sig( RX_En_Sig ), // input - from top .RX_Pin_In( RX_Pin_In ), // input - from top .BPS_CLK( BPS_CLK ), // input - from U2  .Count_Sig( Count_Sig ), // output - to U2 .RX_Data( RX_Data ), // output - to top .RX_Done_Sig( RX_Done_Sig ) // output - to top  );  /************************************/   endmodule



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉