关于这段代码,请大家指点一下,实在搞不清楚。

[复制链接]
259|6
 楼主 | 2018-9-11 11:48 | 显示全部楼层 |阅读模式
本帖最后由 cyberbill 于 2018-9-11 15:07 编辑

这是一个SPI MASTER的实现,来自altera的DEMO请看图片蓝色区域,为什么是处理的频率激发,而不是WR和RD?

好几个激发也是来自处理器的频率,问题是cpu如果频率很高,岂不是有问题
而且我实际在epm240测试过,如果写入WR的信号持续几十个毫秒,出来的波形不正确,WR是要很短的时间才行
是不是哪里错了?



完整代码请看这里



本帖子中包含更多资源

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

x
| 2018-9-11 13:55 | 显示全部楼层
基本语法理解不过关!
pro_clk的上升沿来,就去执行一次下面的语句。
wr,rd之类的使能信号,一般一个周期就够了
 楼主 | 2018-9-11 15:05 | 显示全部楼层
kdurant 发表于 2018-9-11 13:55
基本语法理解不过关!
pro_clk的上升沿来,就去执行一次下面的语句。
wr,rd之类的使能信号,一般一个周期就 ...

为什么不写成

always @ (posedge WR or posedge RD) begin
    if (CS) begin
        case (addr)
        2'b00 : if (WR) control <= data_in;
        2'b01 : if (RD) data_out <= status;   // Void
        2'b10 : if (WR) txdata <= data_in;
        2'b11 : if (RD) data_out <= rxdata;
        endcase
    end
end
| 2018-9-11 20:15 | 显示全部楼层
cyberbill 发表于 2018-9-11 15:05
为什么不写成

always @ (posedge WR or posedge RD) begin

不要使用多时钟  wr  rd  可以做为时钟使能  
| 2018-9-11 20:17 | 显示全部楼层
如果写入WR的信号持续几十个毫秒 。。。。 可以使用微分电路处理wr  使它只有一个时钟宽度
| 2018-9-13 12:49 | 显示全部楼层
cyberbill 发表于 2018-9-11 15:05
为什么不写成

always @ (posedge WR or posedge RD) begin

对于简单的应用,这样写结果也可能是对的。

复杂设计时,多时钟会让你的时序乱糟糟的
| 2018-9-13 12:54 | 显示全部楼层
我觉得你去理解下什么的同步逻辑和异步逻辑吧,看看他们之间的比较,应该就明白了
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /4 下一条

快速回复 返回顶部 返回列表