打印
[CPLD]

昨天遇到一个怪事 百思不得其解

[复制链接]
894|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
XLDZZ|  楼主 | 2015-5-6 08:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
昨天遇到一个怪事  百思不得其解
先上代码
always@(*)
  begin
   if((ADD=='D106)&(ST==DATA_W))
    L_DAT_CON_N<=DAT_OUT[3:0];
   else
    L_DAT_CON_N<=L_DAT_CON;
  end

其中L_DAT_CON_N是对外输出的4BIT宽度信号
DAT_OUT是8bit总线传输过来的信号
8bit对4bit 所以为了匹配 我节选了低4位
也就是代码中的DAT_OUT[3:0]
可是这样做的话 数据无论如何多传输不到IO上
必须改成
   L_DAT_CON_N<=DAT_OUT;
但这样写多了一个警告

相关帖子

沙发
XLDZZ|  楼主 | 2015-5-6 10:10 | 只看该作者
仿真波形
对应地址是106 总线数据输入30  输出14(应为节选低4位)
结果是正确的 说明逻辑描述应该对的

y.jpg (214.45 KB )

y.jpg

使用特权

评论回复
板凳
ococ| | 2015-5-6 11:21 | 只看该作者
你说的传不到IO是仿真时候还是实际板子上?

另外你把你的组合逻辑改成时序逻辑试过吗?

使用特权

评论回复
地板
XLDZZ|  楼主 | 2015-5-6 14:55 | 只看该作者
这个是仿真 仿真没问题 通过了
问题下到板子上有问题

组合和时序逻辑 应该没啥关系
应为后一级就是时序逻辑  所以在rtl图中是寄存器输出

使用特权

评论回复
5
yangwenguan| | 2015-5-6 17:41 | 只看该作者
L_DAT_CON_N[3:0]<=DAT_OUT[3:0];

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

182

帖子

0

粉丝