4719|8

10

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

大神帮看看 o_TxD 通过示波器看看左右抖动很严重 [复制链接]

`timescale 1ns / 1ps

module Rec_commond(
                     i_clk, //20M
                      i_clk100m, //100M
                      i_rstn,
                      o_TxD,
                      ready //

    );
input i_clk,
     i_clk100m;
input i_rstn;
output o_TxD;
output ready;

reg [10:0] RegData =11'b010_1010_1010 ;
reg pos_ready;
reg pos_Sclk;
reg start;
reg sent;

reg o_TxD;
reg cnt_start;
reg [3:0] cnt_sent;
reg [3:0] state;
reg Lclk;

wire i_clk;
wire i_rstn;
wire [7:0]  k_Sclk = 8'd20;
wire [10:0] k_ready = 11'd1000;
wire Sclk;  // 1M
wire ready;//20K

/////////// ready上升沿识别
always@(posedge i_clk)
begin
   if (~i_rstn) begin
   start<=0;
   pos_ready<=0;

end
    else begin
    pos_ready <= ready;
    start <= {(~pos_ready) & ready};  
    end
end

///////////Sclk 上升沿识别
always@(posedge i_clk)
begin
   if (~i_rstn) begin
    sent<=0;
    pos_Sclk<=0;
    end
    else begin
    pos_Sclk <= Sclk;
    sent <= {(~pos_Sclk) & Sclk};
    end
end


always @(posedge i_clk)begin
  if (~i_rstn) begin
    state <= 4'b0000;
     o_TxD<=1;
     end
  else begin
  case(state)
     4'b0000: if(start)begin
                          state<=4'b0001;
                               // o_TxD <= RegData[0];
                                 end
     4'b0001: if(sent)begin
                          state<=4'b0010;
                                 o_TxD <= RegData[0];
                                 end
     4'b0010: if(sent)begin
                          state<=4'b0011;
                                 o_TxD <= RegData[1];
                                 end
     4'b0011: if(sent)begin
                          state<=4'b0100;
                                 o_TxD <= RegData[2];
                                 end
     4'b0100: if(sent)begin
                          state<=4'b0101;
                                 o_TxD <= RegData[3];
                                 end
     4'b0101: if(sent)begin
                          state<=4'b0110;
                                 o_TxD <= RegData[4];
                                 end
     4'b0110: if(sent)begin
                          state<=4'b0111;
                                 o_TxD <= RegData[5];
                                 end
     4'b0111: if(sent)begin
                          state<=4'b1000;
                                 o_TxD <= RegData[6];
                                 end
     4'b1000: if(sent)begin
                          state<=4'b1001;
                                 o_TxD <= RegData[7];
                                 end
     4'b1001: if(sent)begin
                          state<=4'b1010;
                                 o_TxD <= RegData[8];
                                 end
        4'b1010: if(sent)begin
                          state<=4'b1011;
                                 o_TxD <= RegData[9];
                                 end
        4'b1011: if(sent)begin
                          state<=4'b0000;
                                o_TxD <= RegData[10];
                                 end

    default:state<=4'b0000;
    endcase
end
end

////////////////分频得到1M Sclk

Sclk U_Sclk(
                    .i_clk(i_clk),
                    .i_rstn(i_rstn),
                    .k(k_Sclk),
                    .clkk(Sclk) //1M

    );
//////////////////分频得到ready 20k
ready U_ready(
                    .i_clk(i_clk),
                    .i_rstn(i_rstn),
                    .k(k_ready),  
                    .clkk(ready) //ready 20k

    );
endmodule


此帖出自FPGA/CPLD论坛

最新回复

看一下ready和sdk两个信号的相对关系对不对,建议这两个信号在一个模块产生,也就是用一个计数器来分频!  详情 回复 发表于 2016-9-8 11:15
点赞 关注
 

回复
举报

1万

帖子

28

TA的资源

裸片初长成(高级)

沙发
 
用示波器看串口,抖动说明发送的波形非均等的“0”、“1”,或其它有规律的数据,使波形同步点来回变动所致。

这不能说明串口有没有问题。
此帖出自FPGA/CPLD论坛
 
 

回复

1950

帖子

4

TA的资源

版主

板凳
 
本帖最后由 5525 于 2016-7-19 21:49 编辑

楼主分频后 case数据输出,正常操作。
沙发说的对,你看示波器抖动,那是你看。
数据能不能接受是接受放看,
接受方能否拿下数据,
    一看你的接受做法,
     二有标准的误差控制范围。

你如果非要看他抖,的看具体抖到啥程度,在不在你的接受范围。

此帖出自FPGA/CPLD论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

4
 
大神 在稳定的数据前有几个虚影
此帖出自FPGA/CPLD论坛
 
 
 

回复

1950

帖子

4

TA的资源

版主

5
 
北极星的极光

你干脆直接把示波器设成 autoset看看,
前面抖,后面抖不重要,
重要的是抖得量,在你的预估范围否 or 满足你接受方的需求否
此帖出自FPGA/CPLD论坛
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

6
 
dontium 发表于 2016-7-19 10:11
用示波器看串口,抖动说明发送的波形非均等的“0”、“1”,或其它有规律的数据,使波形同步点来回变动所致 ...

就是这样的抖动

抖动.jpg (1.82 MB, 下载次数: 0)

抖动.jpg
此帖出自FPGA/CPLD论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

7
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自FPGA/CPLD论坛
 
 
 

回复

1950

帖子

4

TA的资源

版主

8
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自FPGA/CPLD论坛
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

9
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表