|
本帖最后由 beirvin 于 2012-9-10 13:57 编辑
刚开始学习FPGA,最近在编写数码管显示时遇到了一个让人不解的问题。不说废话,直接拿出我的问题吧,请看如下代码:
module number_mod_module
(
CLK, RSTn,
Number_Data,
Ten_Data, One_Data
);
input CLK;
input RSTn;
input [7:0]Number_Data;
output [3:0]Ten_Data;
output [3:0]One_Data;
/*********************************/
reg [31:0]rTen;
reg [31:0]rOne;
always @ ( posedge CLK or negedge RSTn )
if( !RSTn )
begin
rTen <= 32'd0;
rOne <= 32'd0;
end
else
begin
rTen <= Number_Data / 10;
rOne <= Number_Data % 10;
end
/***********************************/
assign Ten_Data = rTen[3:0];
assign One_Data = rOne[3:0];
/***********************************/
endmodule
同样的代码,在Quartus II9.1上综合成功,但是在ISE12.4上综合就会出现如下报错:
ERROR:Xst:867 - "number_mod_module.v" line 48: Operator / is only supported when the second operand is a power of 2.
这句话的意思是二目运算符“/”只有第二个操作数为2的幂次方才有效。事实上我将其改成如下代码:
rTen <= Number_Data / 4;
rOne <= Number_Data % 4;
这样的话在ISE12.4上综合就能成功。
这个问题小弟着实不明白,希望各位仁兄给予指点!!!
补充一点,小弟拥有两块开发板,一款是赛灵思的spartan 3E XC3S500,一款是altera的cycloneII EP2C8Q208C8N,呵呵都是实验室提供的!
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|