首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVR的Verilog移位寄存器接口

AVR的Verilog移位寄存器接口
EN

Stack Overflow用户
提问于 2014-03-28 20:07:59
回答 1查看 574关注 0票数 2

总的来说,我对Verilog和HDL非常陌生。我最近买了一个Mojo (斯巴达6)开发板,并一直在玩它。

我感兴趣的一个概念是移位寄存器,具体而言,将一个ATmega与FPGA接口以在FPGA上加载移位寄存器。我和这个Verilog之间有这样的工作:

代码语言:javascript
复制
module sr8(
    input clk,        // FPGA clock
    input sshift,     // Shift signal from ATmega
    input sdata,      // Data from ATmega
    output [7:0] PO   // Parallel output
);

// Shift register
reg [7:0] srdata = 8'd0;

reg sshift_FF;
wire sshift_en;
always @(posedge clk) begin
    sshift_FF <= sshift;
end
assign sshift_en = sshift & !sshift_FF;

always @(posedge clk) begin
    if ( sshift_en ) begin
        srdata <= { srdata[6:0], sdata };
    end
end

assign PO = srdata;

endmodule

这真的很简单,当MHz为1时,它会将数据移到时钟的正边(50 sshift_en )。sshift_en是sshift的当前值和翻转sshift_FF输出的补充(即检查上升的边缘)。

我的真正问题是:这是一种好/正确的方法吗?,我在Verilog中对实现移位寄存器做了大量的研究,我的概念基本上是一样的,只是我希望我的移位寄存器的“移位”信号由AVR (操作速度比FPGA上的50 MHz时钟慢得多)指示,而不是时钟信号(就像我看到的所有例子一样)。

如果我需要提供更多关于这里的信息,请告诉我。

提前谢谢你!

编辑:--我已经修改了代码,以包含一个同步部分:

代码语言:javascript
复制
module sr8(
    input clk,
    input sshift,
    input sdata,
    output [7:0] PO
);

// Shift register
reg [7:0] srdata = 8'd0;

// Start of modified synchronization section
reg sshift_d, sshift_dd, sshift_ddd, sshift_en;
always @(posedge clk) begin
    sshift_d <= sshift;
    sshift_dd <= sshift_d;
    sshift_ddd <= sshift_dd;
    sshift_en <= sshift_dd & ~sshift_ddd;
end
// End of modified section

always @(posedge clk) begin
    if ( sshift_en ) begin
        srdata <= { srdata[6:0], sdata };
    end
end

assign PO = srdata;

endmodule
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-28 20:46:22

在我看来你的值班记录没问题。

来自AVR的sshift信号是一个异步信号wrt您的FPGA时钟,这是一个可能的亚稳态来源。我会用同步器来减少机会。

见本文件“同步登记册”一节:

http://www.altera.com/literature/wp/wp-01082-quartus-ii-metastability.pdf

另一个小问题:虽然在你的例子中是可以互换的!(连同&& and可比)用于逻辑操作,而~用于逐位否定,而IMHO更适合用于这种上下文。一种常见的用法!是:

if (!condition)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22722263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档