[verilog] Verilog 代码,问题出在哪,小白求助,在线等

[复制链接]
1392|6
 楼主| zhaironghui 发表于 2015-10-22 10:52 | 显示全部楼层 |阅读模式
本帖最后由 zhaironghui 于 2015-10-22 11:25 编辑

大家好,接触 Verilog 时间不长,遇到一个问题,真心求教。谢谢
背景:想把 AD 输出的 8 位并行数据在 CPLD 中进行并串转换,并在 DSP 提供的 串行时钟 CLKR1 和 帧同步(片选)信号 FSR1 的控制下,将串行数据经 DR1 引脚输出
问题:综合能通过,但经过波形仿真,DR1 输出的数据总是不对

代码如下:
//
module spi(
        output reg clk_ad,

   //SPI_1,方向:CPLD-->DSP        
        output reg DR1,
        input FSR1,
        input CLKR1,
        
        input clk_in,
        input [7:0]data_in       //AD输入cpld的8位数据
        );
        
        reg[4:0]temp;
//add        
        reg[7:0]data_to_dsp;     //用于数据缓存
        reg[8:0]data_to_dspp;

//AD的时钟由有源晶振4分频得到,10/4=2.5M
always @(posedge clk_in) begin
        temp<=temp+1'd1;
        if(temp==1)
                begin
                        clk_ad<=~clk_ad;
                        temp<=0;
end

        else
                        clk_ad<=clk_ad;
end

//AD输入到CPLD的数据转移到寄存器data_to_dsp中
always @(posedge clk_ad) begin
        data_to_dsp<=data_in;               
end

//CPLD到DSP的SPI实现(SPI1)
always @(negedge CLKR1) begin
        if(!FSR1)
                        begin
                                  data_to_dspp[8:0] <= {data_to_dsp[7:0],1'b0};
                                DR1 <= data_to_dspp[8];
    end
end

endmodule
feihufuture 发表于 2015-10-22 12:08 | 显示全部楼层
将实现简化说下
 楼主| zhaironghui 发表于 2015-10-22 14:14 | 显示全部楼层

我波形仿真的时候,给 FSR1 的是 2.5MHz (频率跟 clk_ad 一样),给 CLKR1 的是 40MHz

本帖子中包含更多资源

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

×
feihufuture 发表于 2015-10-22 15:03 | 显示全部楼层
DR1是啥管脚
 楼主| zhaironghui 发表于 2015-10-22 15:49 | 显示全部楼层

是我定义的 SPI 协议中的数据输出引脚,可能定义的不规范
简单happy 发表于 2015-11-11 15:05 | 显示全部楼层
路过来学习的
玄德 发表于 2015-11-11 21:36 | 显示全部楼层

又碰到一个不考虑复位问题的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

71

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部