chenxi_2008 发表于 2014-1-14 22:10:02

新手问下SPI slave 和双边沿检测相关问题

想用fpga做spi slave 用stm32驱动
初步代码如下:
module SpiSlave(clk,nrst,sclk,nss,miso,mosi,led);
input clk,nrst,sclk,nss,mosi;
output miso;
output led;
reg sr;

reg RegLed;
reg SclkCnt,SclkCntR;
reg NssCnt,NssCntR;
assign miso = sr;

always @(posedge clk or negedge nrst )
begin
        if(!nrst) begin
                sr <= 0;
                SclkCntR <= 0;
                NssCntR <= 0;
        end
        else       
                if(NssCntR != NssCnt ) begin //检测上升沿
                        RegLed <= sr;
                        NssCntR <= ~NssCntR;
                end
                else
                        if( SclkCntR != SclkCnt) begin
                                SclkCntR <= ~SclkCntR;
                                sr <= {sr,mosi};
                        end               
end
//打算用这种方法检测上升沿
always @(posedge sclk or negedge nrst)
begin
        if(!nrst)
                SclkCnt <= 0;
        else
                SclkCnt <= ~SclkCnt;
end
always @(posedge nss or negedge nrst)
begin
        if(!nrst)
                NssCnt <= 0;
        else
                NssCnt <= ~NssCnt;
end
assign led = RegLed;
endmodule

综合后下载时运行并用逻辑分析仪分析发现结果时好时坏,
led最多有50%是显示所要的结果
而且发现SclkCnt和SclkCntR居然有时和sclk同时变化
按逻辑来说SclkCntR应该比SclkCnt和Sclk慢一个时钟的
求高手指教
是不是两个边沿触发 效果不好?

页: [1]
查看完整版本: 新手问下SPI slave 和双边沿检测相关问题