在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2578|回复: 7

[求助] verilog赋值问题

[复制链接]
发表于 2012-4-5 00:29:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
我想给Din一次赋值如下,但在modelsim中报错。(Din是reg类型 )   
      Din = 1;
      Din = 2;
      Din = 3;
      Din = 4;
      Din = 5;
      Din = 6;
      Din = 7;
      Din = 8;
      Din = 9;

第二行就开始报错,报错显示:tb.v(28): near "=": expecting: IDENT
发表于 2012-4-5 08:24:55 | 显示全部楼层
把整个tb.v内容贴出来吧
让人好理解一点的
发表于 2012-4-5 08:51:19 | 显示全部楼层
这样完全没法理解
 楼主| 发表于 2012-4-5 11:04:56 | 显示全部楼层
回复 2# qlengyu


    `timescale 1ns/100ps
module tb;
   reg Clk,Rst;
   reg Din,BofIn;
   wire dm,bof;
   wire Dout,BofOut;
      
   IntLvr U1(Clk,Rst,Din,BofIn,dm,bof);
   IntLvr U2(Clk,Rst,dm,bof,Dout,BofOut);
   
   initial begin
         Clk = 0;
         forever #5 Clk = ~ Clk;
      end           
   initial begin
         Rst = 1;
         BofIn = 0;
         #8 Rst = 0;
         #24  BofIn = 1;
         #10  BofIn = 0;
                 
      end
      
   always @(negedge Clk)
      Din = 1;
      Din = 2;
      Din = 3;
      Din = 4;
      Din = 5;
      Din = 6;
      Din = 7;
      Din = 8;
      Din = 9;
      
endmodule      

   报错位置在Din=2这里,报错显示的是tb.v(28): near "=": expecting: IDENT
   我想给Din依次赋值,从1到9。
   请告诉我如何修改??谢谢。
 楼主| 发表于 2012-4-5 11:05:49 | 显示全部楼层
回复 3# qingxuan1


    `timescale 1ns/100ps
module tb;
   reg Clk,Rst;
   reg Din,BofIn;
   wire dm,bof;
   wire Dout,BofOut;
      
   IntLvr U1(Clk,Rst,Din,BofIn,dm,bof);
   IntLvr U2(Clk,Rst,dm,bof,Dout,BofOut);
   
   initial begin
         Clk = 0;
         forever #5 Clk = ~ Clk;
      end           
   initial begin
         Rst = 1;
         BofIn = 0;
         #8 Rst = 0;
         #24  BofIn = 1;
         #10  BofIn = 0;
                 
      end
      
   always @(negedge Clk)
      Din = 1;
      Din = 2;
      Din = 3;
      Din = 4;
      Din = 5;
      Din = 6;
      Din = 7;
      Din = 8;
      Din = 9;
      
endmodule      

   报错位置在Din=2这里,报错显示的是tb.v(28): near "=": expecting: IDENT
   我想给Din依次赋值,从1到9。
   请告诉我如何修改??谢谢。
发表于 2012-4-5 11:11:12 | 显示全部楼层
always @(negedge Clk)
      Din = 1;
      Din = 2;
      Din = 3;
      Din = 4;
      Din = 5;
      Din = 6;
      Din = 7;
      Din = 8;
      Din = 9;
改成
always @(negedge Clk)
begin
      Din = 1;
      Din = 2;
      Din = 3;
      Din = 4;
      Din = 5;
      Din = 6;
      Din = 7;
      Din = 8;
      Din = 9;
end
就应该不会报错了,但是仿真激励并不对的
要想通过这样的方式对 Din 依次赋值,需要
在内部定义一个计数器,然后根据计数器的值
分别给 Din 赋值
 楼主| 发表于 2012-4-5 11:53:04 | 显示全部楼层
回复 6# qlengyu


    嗯是的,如果那样改,一仿真就死机。
    你说是用计数器给Din赋值,我写了一下:

`timescale 1ns/100ps
module tb;
   reg Clk,Rst;
   reg Din,BofIn;
   wire dm,bof;
   wire Dout,BofOut;
   reg [3:0] cnt;
   
      
   IntLvr U1(Clk,Rst,Din,BofIn,dm,bof);
   IntLvr U2(Clk,Rst,dm,bof,Dout,BofOut);
   
   initial begin
         Clk = 0;
         forever #5 Clk = ~ Clk;
      end           
   initial begin
         Rst = 1;
         BofIn = 0;
         #8 Rst = 0;
         #24  BofIn = 1;
         #10  BofIn = 0;
                 
      end
      
   always @(negedge Clk)
  begin
      cnt <= cnt + 1;
      Din = cnt;
   end
endmodule      
      
   在仿真时还是不对,Din在仿真时只出现一道红线。。
   我想给Din依次赋值,从1到9,怎么弄呀??
发表于 2012-4-5 14:03:53 | 显示全部楼层
定义的计数没有初值,所以仿真不出来的
只要给计数器赋个初值就可以的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-3 16:34 , Processed in 0.021217 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表