在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2720|回复: 3

[讨论] 串口

[复制链接]
发表于 2013-7-31 21:42:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
module UartRecv (
              //input
              sys_clk        ,
              sys_rst_n      ,
              uart_rxd       ,

              //output
              LED
              );

//input ports

input                    sys_clk             ;    //system clock;
input                    sys_rst_n           ;    //system reset, low is active;
input                    uart_rxd            ;    //uart rxd input ;   

//output ports
output reg [WIDTH-1:0]   LED                ;

//reg define
reg    [WIDTH-1:0]       buff                ;         
reg    [WIDTH-1:0]       data_out            ;

reg                      uart_rxd_dly1       ;    //uart rxd input ;   
reg                      uart_rxd_dly2       ;    //uart rxd input ;   
reg                      uart_rxd_dly3       ;    //uart rxd input ;
reg                      uart_rxd_dly4       ;    //uart rxd input ;

reg                      rxd_negdge_sig_dly1 ;


reg  [SIZE-1:0]          counter             ;     

//wire define
wire                     rxd_negdge_sig      ;

//parameter define
parameter WIDTH = 8;
parameter SIZE  = 16;

/*******************************************************************************************************
**                              Main Program   
**  
********************************************************************************************************/

always @(posedge sys_clk or negedge sys_rst_n) begin
        if (sys_rst_n ==1'b0) begin
           uart_rxd_dly1 <= 1'b0;
           uart_rxd_dly2 <= 1'b0;
           uart_rxd_dly3 <= 1'b0;           
           uart_rxd_dly4 <= 1'b0;           
        end
        else begin
           uart_rxd_dly1  <= uart_rxd     ;
           uart_rxd_dly2  <= uart_rxd_dly1;
           uart_rxd_dly3  <= uart_rxd_dly2;           
           uart_rxd_dly4  <= uart_rxd_dly3;            
        end   
end

assign rxd_negdge_sig = (~uart_rxd_dly3) & uart_rxd_dly4;  

always @(posedge sys_clk or negedge sys_rst_n) begin
        if (sys_rst_n ==1'b0)  
           rxd_negdge_sig_dly1 <= 1'b0;        
        else  
           rxd_negdge_sig_dly1  <= rxd_negdge_sig;                    
end

always @(posedge sys_clk or negedge sys_rst_n) begin
        if ( sys_rst_n == 1'b0 )  
            counter <= 16'b0;
        else if ( rxd_negdge_sig_dly1 == 1'b1 && counter > 57200 )
            counter <= 16'b0;
        else if ( counter <= 57200 )  
            counter  <= counter + 16'b1;   
        else ;
end

always @(posedge sys_clk or negedge sys_rst_n) begin
    if ( sys_rst_n == 1'b0 )  
        buff <= 8'b0;   
    else begin
        case ( counter )
             7800     :   buff[0]  <=  uart_rxd_dly4     ;
             13000    :   buff[1]  <=  uart_rxd_dly4     ;
             18200    :   buff[2]  <=  uart_rxd_dly4     ;
             23400    :   buff[3]  <=  uart_rxd_dly4     ;
             28600    :   buff[4]  <=  uart_rxd_dly4     ;
             33800    :   buff[5]  <=  uart_rxd_dly4     ;
             39000    :   buff[6]  <=  uart_rxd_dly4     ;
             44200    :   buff[7]  <=  uart_rxd_dly4     ;
             default  :   buff     <=  buff              ;   
        endcase
    end
end

always @(posedge sys_clk or negedge sys_rst_n) begin
        if (sys_rst_n ==1'b0)  
           LED <= 8'b0;        
        else  
           LED <= buff;        
end

endmodule
//end of RTL code        


请教一下rxd_negdge_sig_dly1什么时候会为1?   感觉assign rxd_negdge_sig = (~uart_rxd_dly3) & uart_rxd_dly4;  这个永远不会为1?       当uart_rxd =1时候,uart_rxd_dly4赋值给BUFF 我是认为这些值都是同样的值,但是实验起来指示灯只有3个亮,说明这些值赋值给BUFF后有几个时段为1,几个时段为0,不知道啥原因,向各位大虾请教一下,谢谢
发表于 2013-8-2 09:45:20 | 显示全部楼层
uart_rxd_dly3=0  uart_rxd_dly4=1的时候 rxd_negdge_sig就是1了啊。。
发表于 2013-8-2 11:47:05 | 显示全部楼层
串口这么复杂啊
 楼主| 发表于 2013-8-2 12:21:37 | 显示全部楼层
回复 2# falloutmx


  不对吧  3等于0的时候,4也是为0吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-9 01:55 , Processed in 0.019763 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表