在fpga工程應用設計中,随處可見加法器,乘法器等等。現在将一些常用子產品和心得體會先記錄下來,以便日後使用。
一位半加器:
module halfadder(cout,sum,a,b);
outputcout,sum; //不申明,預設是wire變量
input a,b;
assign{cout,sum}=a+b;//cout為進位,sum為和
endmodule
一位全加器:
module fulladder(a,b,cin,cout,sum);
inputa,b,cin;
outputcout,sum;
assign{cout,sum}=a+b+cin;
利用兩個半加器實作全加器:
module halfadder(a,b,sum,cout);
assign{cout,sum}=a+b;
module fulladder(x,y,c_in,sum,c_out);
inputx;
inputy;
inputc_in;
outputsum;
outputc_out;
wirea_sum;
wirea_out;
wireb_out;
assignc_out=a_out|b_out;
halfadderhalf(x,y,a_sum,a_out);
halfadderhalf1(c_in,a_sum,sum,b_out);
測試檔案的編寫技巧
就拿上面的半加器來說,我們需要添加的就是輸入信号a,b.可以采用下列方法:
第一種:
#100 a=0;
#100 b=0;
#100 a=1;
#100 b=1;
這種編輯方式雖然十分友善,可是對于很多情況的測試編寫困難。
第二種:
Integer I;
For(i=0;i<=15;i=i+1)
a=I;//注意這裡a是一位,是以輸出為0101010101010101
第三種:
Repeat(16)
a ={$random}%2;//這裡産生随機的0 1比特流。
作者:nineheadedbird