名稱:補碼電路設(shè)計Verilog代碼Quartus仿真
軟件:Quartus
語言:Verilog
代碼功能:
1.補碼電路
設(shè)計要求:從原碼和補碼之間進行互相變換,且數(shù)據(jù)位數(shù)可從到8位擴展到16位、32位,且增加控制電路部分。
2.浮點數(shù)產(chǎn)生電路設(shè)計
設(shè)計要求:將浮點數(shù)變?yōu)?2位單精度的機器數(shù),電路包括規(guī)格化浮點數(shù)產(chǎn)生電路、階碼(移碼)產(chǎn)生電路的設(shè)計,另增加控制電路產(chǎn)生復(fù)位信號、啟動信號等。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 仿真圖
部分代碼展示:
//補碼轉(zhuǎn)換 module?Complement #(parameter?WIDTH=8?)//位寬8位,可以自定義修改 ( input?[WIDTH-1:0]?data_in,//輸入待轉(zhuǎn)換值 input?shift_en,//轉(zhuǎn)換控制信號,0表示原碼到補碼,1表示補碼到原碼 output?reg?[WIDTH-1:0]?data_out//輸出值 ); //原理 //原碼為十進制數(shù)的二進制表示,正數(shù)符號位為0,負數(shù)符號位為1,例如:10的二進制為00001010,-10的二進制為10001010 //正數(shù)原碼轉(zhuǎn)補碼:正數(shù)的補碼,與原碼相同,例如,10的原碼為00001010,補碼也是00001010 //負數(shù)原碼轉(zhuǎn)補碼:負數(shù)的補碼:符號位不變,其余各位按位取反,取反后整體加1,例如:-10的原碼為10001010,符號位不變:1??0001010,其余位按位取反:1??1110101,取反后整體加1:11110101?+?1?=?11110110 //正數(shù)補碼轉(zhuǎn)原碼:補碼的符號位為0,表示該補碼的原碼是一個正數(shù),所以補碼就是該數(shù)的原碼,例如:補碼為00001010,它的符號位是0,代表它是一個正數(shù)的補碼,正數(shù)的原碼就是補碼,反正也成立,所以它的原碼是00001010 //負數(shù)補碼轉(zhuǎn)原碼:補碼的符號位為1,表示該補碼的原碼是一個負數(shù),所以可以這樣求負數(shù)的原碼,符號位不變,其余各位按位取反,然后再整體加1, //原碼轉(zhuǎn)補碼 //若為正數(shù),補碼即原碼 wire?[WIDTH-1:0]?unsigned_data; assign?unsigned_data=data_in; //若為負數(shù):符號位不變,其余各位按位取反,取反后整體加1 wire?[WIDTH-1:0]?signed_data; assign?signed_data={data_in[WIDTH-1],~data_in[WIDTH-2:0]}?+?1;
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=487