天天看點

【FPGA學習】Verilog之加法器

         在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

繼續閱讀