完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
求大神帮忙看看
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; wire ready; /////////// 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 |
|
|
相关推荐
|
|
回帖奖励 +1 分积分
抖动说明你程序哪边有问题
|
|
|
|
|
|
|
|
|
采沿的时候要用第二拍和第三拍,不能用第一拍和第二拍,你多打俩拍就好了!sent <= {(~pos_Sclk) & Sclk};
start <= {(~pos_ready) & ready}; 这两个地方,这是跨时钟域,不能用第一拍的东西! |
|
|
|
|
|
|
|
NVMe高速传输之摆脱XDMA设计54:如何测试队列管理功能2
221 浏览 0 评论
NVMe高速传输之摆脱XDMA设计53:如何测试队列管理功能
357 浏览 0 评论
NVMe高速传输之摆脱XDMA设计52:主要功能测试结果与分析4(NVMe 指令提交与完成机制测试)
910 浏览 0 评论
NVMe高速传输之摆脱XDMA设计51:主要功能测试结果与分析3 nvmePCIe高速存储 PCIe高速存储
562 浏览 0 评论
NVMe高速传输之摆脱XDMA设计50:主要功能测试结果与分析2 nvmePCIe高速存储
563 浏览 0 评论
4553 浏览 64 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-11 09:09 , Processed in 0.496488 second(s), Total 39, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖