搜索
bottom↓
回复: 2

这两段程序问题在哪里?应该如何修改?

[复制链接]

出390入22汤圆

发表于 2017-10-6 10:01:00 | 显示全部楼层 |阅读模式
本帖最后由 liudingding 于 2017-10-6 11:46 编辑

用CPLD(EPM240)和SRAM(61LV25616)做了个液晶驱动板,现在是单片机写入61LV25616中的数据有很大一部分,估计百分之一二有了,甚至更多,是错误的,就是显示时有不希望的黑白点子,经过排查,问题出在以下两段程序上,

程序段1:
wire [15:0] x16;
reg[7:0]A;
always @( posedge FALE)
begin
   A<=DA;
end
assign x16 ={H_I,A};
assign FALE =!ALE;
该段x16是单片机(MEGA64)提供的16位储存器地址,单片机端口A(DA)连接CPLD,ALE信号反相后作为锁存时钟得到地址低八位,H_I为端口C提供的十六位地址中高八位。现在的问题是如果读写SRAM的地址不变,读写60K次数据没有错误,如果每读写一次SRAM地址加或减1,则有错误,六万次读写错几百次。


程序段2:
reg [17:0]RA;   
always @(FWR or FRD or OU)
begin
if((FWR||FRD)||OU)
begin
  RA =(FWR||FRD) ? x16 : mx[18:1];
end   
else  
begin
  RA =x16;
end      
end  
该段FWR、FRD是WR,RD反相后信号,就是WR或RD有效时,加在SRAM上的地址为单片机十六位总线,OU是自动连续写入SRAM的信号,mx是自动写入SRAM地地址
该段倒数第三行本应该RA=md;md是液晶数据连续读出地址,就出错了,出错数量和第一段程序基本相似,md改成x16,就不出错了。


另外该段改成assign RA =((FWR||FRD)||OU)?((FWR||FRD) ? x16 : mx[18:1]):md;或者简化assign RA=x16;不行,不知为什么。这样改错误提示见图。



上述两段程序应该如何修改呢?我对verilog就是会个皮毛,尽量把答复说的容易理解一些

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2017-10-6 10:17:42 | 显示全部楼层
降低速度试试,看看是不是各个数据时钟之类的不同步

出20入25汤圆

发表于 2017-10-6 10:23:50 | 显示全部楼层
异步时序问题
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 14:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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