Re: [問題] tri

作者: pokia (幻影成風)   2010-05-04 15:00:03
原文恕刪...
我把獨立出來的那一段module拿去做TR好像也是同樣結果...
code大概長這樣:
module regFile(dataout, clk, clear, read, write, datain);
input clk, clear, read, write;
input [2:0] datain;
output[2:0] dataout;
reg [2:0] dataout;
reg [2:0] mem[0:4];
reg [2:0] fptr, rptr;
integer i;
always@(posedge clk) begin
if(clear)
begin
for(i = 0;i < 5;i = i + 1)
mem[i] <= 3'd0;
fptr <= 3'd0;
rptr <= 3'd0;
end
else if(read) begin // output to dataout
if(fptr != rptr) begin
dataout <= mem[fptr];
fptr <= (fptr + 1) % 5;
end
else;
end
else if(write) begin // store into mem
if( (rptr+1) % 5 != fptr) begin
mem[rptr] <= datain;
rptr <= (rptr + 1) % 5;
end
end
else;
end
endmodule
TR建到mem的時候就很花時間了...
所有的順序我也都試過,好像沒什麼差別。
是不是要把整個module拿掉?
作者: rockyai (rocky)   2010-05-04 15:39:00
"%5"可能是造成BDD建不出來的原因,或許要換成用AND之類BDD在遇到乘法或除法類的都會建很大
作者: ric2k1 (Ric)   2010-05-04 16:49:00
%5 對硬體來說並不 friendly... 試試看改成 if...else?還有你的電路不會產生 latch 嗎? 一堆 else 沒有 assignmen
作者: pokia (幻影成風)   2010-05-04 20:17:00
單純做加法就有點困難...看來目前只能減少mem的個數。

Links booklink

Contact Us: admin [ a t ] ucptt.com