seepanhongri 发表于 2010-4-7 11:04:47

FPGA 我的几句话的程序都有问题,希望高手帮忙解决

module motor (clk,up,down,g);
input        clk,up,down;
output        g;
reg g;

initial
begin
        g <= 1;
end

always @ (posedge clk)
begin
        if (up == 1'b1)
        g <= g + 1;
        else if (down == 1'b1)
        g <= g - 1;
        else if(up == 1'b0&down == 1'b0)
        g <= g;
end
endmodule
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_544213.jpg
(原文件名:未命名.jpg)

为什么g是011了呢,我是希望他是010的

jiangjx 发表于 2010-4-7 15:52:40

if (up == 1'b1)
g <= g + 1;
else if (down == 1'b1)
g <= g - 1;
else if(up == 1'b0&down == 1'b0)
g <= g;

有些问题!!

else if(up == 1'b0&down == 1'b0)
g <= g;

不可能起作用

综合的时候出问题了

flamingwave 发表于 2010-4-7 21:23:31

楼主你好,

initial 语句是不可以综合的,一般只用于仿真。你不能用在这里,即使用也是无效果的。

那么按照逻辑,寄存器g上电应该是一个未知值。

实际上电可能会是0。因为某些FPGA或者CPLD有上电寄存器自清零的功能选择项。
以下
“else if(up == 1'b0&down == 1'b0)
   g <= g;”
这一句你的意思是保持原值。其实可以不写,因为它是时序的寄存器逻辑。
页: [1]
查看完整版本: FPGA 我的几句话的程序都有问题,希望高手帮忙解决