找回密码
 注册
搜索
查看: 1035|回复: 3

[讨论] 新人请教一个verilog小问题,你一定知道,谢谢

[复制链接]
发表于 2008-5-4 18:10:23 | 显示全部楼层 |阅读模式
不好意思我才學verilog 4天而已,我抄寫了一個程序但是quartus 提示 the design “ work ” is undefine , 沒有了其他錯誤了。
因為這僅僅是一個module,沒有test module,是不是說程序本身沒有錯誤了?
程序是編寫一個自動售貨機,收銀 5 ,10,25分,還找零。
module drink_machine(nickel_in,dime_in,quarter_in,collect,nickel_out,dime_out,dispense,reset,clk);
parameter idle=0,five=1,ten=2,twenty_five=3,fifteen=4,thirty=5,twenty=6,owe_dime=7;

input nickel_in,dime_in,quarter_in,reset,clk;
output collect,nickel_out,dime_out,dispense;

reg collect,nickel_out,dime_out,dispense;
reg[2:0] d,q;
always @(nickel_in or dime_in or quarter_in or reset)
    begin
        nickel_out=0;
        dime_out=0;
        dispense=0;
        collect=0;
      if (reset)
            d=idle;
      else
           begin
             d=q;
              case(q)
idle:
             if (nickel_in)
                 d=five;
             else if(dime_in)
             d=ten;
             else if(quarter_in)
             d=twenty_five;
five:
           if (nickel_in)
              d=ten;
              else if(dime_in)
              d=fifteen;
           else if(quarter_in)
              d=thirty;
ten:
             if (nickel_in)
                 d=fifteen;
            else if(dime_in)
                  d=twenty;
            else if(quarter_in)
                 {d,dispense,collect}={idle,2'b11};
twenty_five:
             if (nickel_in)
             d=thirty;
            else if(dime_in)
                  {d,dispense,collect}={idle,2'b11};
                  else if(quarter_in)
                      begin
                           {d,dispense,collect}={idle,2'b11};
                          nickel_out=1;
                        dime_out=1;
                           end
fifteen:
if (nickel_in)
d=twenty;
else if(dime_in)
d=twenty_five;
else if(quarter_in)
begin
{d,dispense,collect}={idle,2'b11};
nickel_out=1;
end
thirty:
if (nickel_in)
{d,dispense,collect}={idle,2'b11};
else if(dime_in)
begin
{d,dispense,collect}={idle,2'b11};
nickel_out=1;
end
else if(quarter_in)
begin
{d,dispense,collect}={idle,2'b11};
dime_out=1;
d=owe_dime;
end
twenty:
if (nickel_in)
d=twenty_five;
else if(dime_in)
d=thirty;
else if(quarter_in)
begin
{d,dispense,collect}={idle,2'b11};
dime_out=1;
end
owe_dime:
begin
dime_out=1;
d=idle;
end
endcase
end
end
always @(posedge clk)
begin
q=d;
end
endmodule

感謝噢
发表于 2008-5-30 16:21:26 | 显示全部楼层
你的 文件名 和你的module的名字是不是不一样啊?有可能是这个问题,我也是新手,学习中.....
点评回复

使用道具 举报

发表于 2008-6-10 15:13:04 | 显示全部楼层
兄弟 ,你的程序不止是一个错误哦,好像还有语法错误.建议你刚开始学不要先用别人的程序进行仿真,看不懂仿真出来也是没用的.先从基本语法学起.
点评回复

使用道具 举报

发表于 2008-6-16 00:24:09 | 显示全部楼层
以下是引用ahl1983在2008-5-30 16:21:26的发言:
你的 文件名 和你的module的名字是不是不一样啊?有可能是这个问题,我也是新手,学习中.....


新手都会体会到这个问题
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-9-30 10:27 , Processed in 0.048623 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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