搜索
bottom↓
回复: 3

看看这段verilog程序应该如何修改

[复制链接]

出390入22汤圆

发表于 2017-8-15 11:08:21 | 显示全部楼层 |阅读模式

下面这段程序,B、C、D中,D需要与时钟相与,结果仿真D与B、C就不一样了,B、C只在对应时钟时是一个脉冲,D变为高电平后就一直为高电平了,计数器清零也为高电平,这是为什么?

module CS(PCK,mx,D,B,C);
input PCK;
output [18:0]mx;
output D,B,C;
reg [18:0]mx;    //鍐欏湴鍧€
reg DT;
reg B,C;
always @ (posedge KA )
begin
      D=0;
      B=0;
      C=0;
     mx<=mx+1;
  if(mx==48) D=1;
  if(mx==28) B=1;
  if(mx==18) C=1;
end
assign KA= PCK||D;


endmodule



出0入0汤圆

发表于 2017-8-15 11:20:10 | 显示全部楼层
本帖最后由 3DA502 于 2017-8-15 11:25 编辑

楼主,你还是不懂HDL,这是图形描述语言,不是程序,没有顺序判断这东西,你所写的,对应的都是LE查找表和flipflop


always @ (posedge KA )
begin
     mx<=mx+1;
end

assign D = (MX== 48)?1:0;
assign B = (MX== 48)?1:0;
assign C = (MX== 48)?1:0;

或者同步逻辑


always @ (posedge KA )
begin
     mx<=mx+1;
end

always @ (nedeage KA )
begin
     if(MX== 48) D<<=1;
else D<<= 0;
end

出390入22汤圆

 楼主| 发表于 2017-8-15 12:47:01 来自手机 | 显示全部楼层
3DA502 发表于 2017-8-15 11:20
楼主,你还是不懂HDL,这是图形描述语言,不是程序,没有顺序判断这东西,你所写的,对应的都是LE查找表和f ...

我输入
assign  B  =(mx==15)?1:0;
怎么编译出错:object "B" on left-hand side of assignment must have a  net  type

出390入22汤圆

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

本版积分规则

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

GMT+8, 2024-4-19 11:35

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

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