




免費(fèi)預(yù)覽已結(jié)束,剩余17頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
EDA/SOPC課程設(shè)計(jì)報(bào)告EDA/SOPC課程設(shè)計(jì)報(bào)告題目: 單精度浮點(diǎn)乘法器 姓 名: 張愷 學(xué) 號(hào):120260230 同組人:劉龍 指導(dǎo)教師:王晨旭 成 績(jī): 信息科學(xué)與工程學(xué)院電子科學(xué)與技術(shù)IIIEDA/SOPC課程設(shè)計(jì)報(bào)告目錄目錄II第1章 課程設(shè)計(jì)的要求11.1 課程設(shè)計(jì)的目的11.2 課程設(shè)計(jì)的條件11.3 課程設(shè)計(jì)的要求1第2章 課程設(shè)計(jì)的內(nèi)容22.1 設(shè)計(jì)思路22.1.1 符合IEEE-754標(biāo)準(zhǔn)的單精度浮點(diǎn)乘法器規(guī)格22.1.2 操作數(shù)類型22.1.3 運(yùn)算規(guī)則32.1.4 邏輯門級(jí)框圖32.2 軟件流程圖42.3 HDL代碼闡述62.4 Modelsim驗(yàn)證102.4.1 驗(yàn)證代碼102.4.2 驗(yàn)證波形122.5 硬件調(diào)試122.5.1 基本說(shuō)明122.5.2 具體操作132.6 虛擬機(jī)下的DC綜合172.7 虛擬機(jī)下的SDF反標(biāo)仿真19第3章 課程設(shè)計(jì)的心得20信息科學(xué)與工程學(xué)院電子科學(xué)與技術(shù)IIIEDA/SOPC課程設(shè)計(jì)報(bào)告第1章 課程設(shè)計(jì)的要求1.1 課程設(shè)計(jì)的目的l 通過(guò)課堂所講授的內(nèi)容以及私下查閱資料,自主完成課程設(shè)計(jì)的題目,提高編 程能力,培養(yǎng)用計(jì)算機(jī)解決實(shí)際問(wèn)題的能力,積累調(diào)試程序的經(jīng)驗(yàn),更好的消化老師課堂所講授的內(nèi)容,對(duì)Verilog這種語(yǔ)言也有了更深的了解;l 掌握較大工程的基本開(kāi)發(fā)技能;l 培養(yǎng)綜合運(yùn)用Modelsim,ISE,Debussy工具進(jìn)行硬件開(kāi)發(fā)的能力;l 培養(yǎng)數(shù)字系統(tǒng)設(shè)計(jì)的基本能力;l 通過(guò)課設(shè)積累起的編程以及硬件的能力對(duì)于今后的考研抑或是找工作都有非常實(shí) 際性的效果;1.2 課程設(shè)計(jì)的條件l 設(shè)計(jì)條件1:gVim編輯器以及Mentor公司開(kāi)發(fā)的FPGA仿真軟件Modelsim;l 設(shè)計(jì)條件2:Xilinx公司開(kāi)發(fā)的硬件設(shè)計(jì)工具ISE以及Xilinx公司的開(kāi)發(fā)板;l 設(shè)計(jì)條件3:虛擬機(jī)環(huán)境下的Linux系統(tǒng)具有的Design Compiler工具;l 設(shè)計(jì)條件4:虛擬機(jī)環(huán)境下的Linux系統(tǒng)具有的SDF工具以及Debussy工具;1.3 課程設(shè)計(jì)的要求l 設(shè)計(jì)要求1:能夠在Modelsim工具下正確的完成程序的編譯以及成功的實(shí)現(xiàn)波形的仿真;l 設(shè)計(jì)要求2:能夠在ISE工具下正確的完成程序的綜合以及合理的綁定管腳并成功的將程序下載到開(kāi)發(fā)板里,在開(kāi)發(fā)板中實(shí)現(xiàn)程序的功能;l 設(shè)計(jì)要求3:能夠在虛擬機(jī)的Linux系統(tǒng)下采用Design Compiler完成邏輯綜合,并且評(píng)估其時(shí)序面積;l 設(shè)計(jì)要求4:能夠在虛擬機(jī)的Linux系統(tǒng)下完成SDF反標(biāo)仿真;第2章 課程設(shè)計(jì)的內(nèi)容2.1 設(shè)計(jì)思路對(duì)于單精度浮點(diǎn)乘法器這一課程題目,重點(diǎn)在于正確理解IEEE-754標(biāo)準(zhǔn),設(shè)計(jì)出符合IEEE-754標(biāo)準(zhǔn)的單精度浮點(diǎn)乘法器。2.1.1 符合IEEE-754標(biāo)準(zhǔn)的單精度浮點(diǎn)乘法器規(guī)格單精度浮點(diǎn)數(shù)32位由高位至低位可劃分為1位符號(hào)位(s),8位階碼(e),23位尾數(shù)(f)。0e255時(shí)為規(guī)格化數(shù);e=0且f=0為正負(fù)0;e=0且f不等于0,為非規(guī)格化數(shù);e=255且f=0,為正負(fù)無(wú)窮;e=255且f不等于0,為NaN(不是一個(gè)數(shù))。圖2-1 單精度浮點(diǎn)數(shù)的規(guī)格2.1.2 操作數(shù)類型符號(hào)/1位階碼/8位尾數(shù)/23位NaN0/111111111非0無(wú)窮0/11111111123b000/100000000任意正常0/1(0,255)任意表2-1說(shuō)明:1、NaN和任何數(shù)相乘都為NaN;2、無(wú)窮和0相乘為NaN,和其他數(shù)相乘都為無(wú)窮;3、0和替他數(shù)相乘都為0;4、正常數(shù)和正常數(shù)相乘再對(duì)他們的乘積進(jìn)行判斷(以上的每一種情況都是在其前面情況不成立情況下進(jìn)行的);5、如flout_a與flout_b中有至少一個(gè)異常,那么flout_c的尾數(shù)部分為優(yōu)先級(jí)高的異常情況的尾數(shù)部分,無(wú)窮和0相乘特殊,指定其尾數(shù)為23b01,0的符號(hào)位為0,其他為sign_asign_b;2.1.3 運(yùn)算規(guī)則兩個(gè)規(guī)格化的單精度浮點(diǎn)數(shù)相乘時(shí),運(yùn)算規(guī)則如下:(1)符號(hào)位相異或得結(jié)果;(2)階碼為e=(e1-127)+(e2-127)+127;(3)尾數(shù)為兩個(gè)尾數(shù)都擴(kuò)展一位后再相乘,得出的為一個(gè)48位數(shù)cf1,取出cf1的第24位至第48位賦給cf3,即cf3=cf147:23,此時(shí)若cf122=0,舍去第1位至23位,若cf122=1,向第24位進(jìn)1,并且舍去第1位至第23位;尾數(shù)規(guī)格化:判斷cf324是否為1,若cf324=1,cf3右移1位,階碼位加1,若cf324=0,則不用進(jìn)行規(guī)格化;最后尾數(shù)取cf322:0。2.1.4 邏輯門級(jí)框圖圖2-2 邏輯門級(jí)框架簡(jiǎn)圖2.2 軟件流程圖圖2-3 總流程圖圖2-4 計(jì)算部分詳細(xì)流程圖2.3 HDL代碼闡述module mux(flout_a,flout_b,clk,en,rst,flout_c,yichu); module mux(flout_a,flout_b,clk,en,rst,flout_c,yichu); input31:0 flout_a; input31:0 flout_b;/設(shè)置兩個(gè)輸入的單精度浮點(diǎn)數(shù) input clk;/時(shí)鐘信號(hào) input en;/使能信號(hào) input rst;/復(fù)位信號(hào) output31:0 flout_c;/輸出的單精度浮點(diǎn)數(shù) output1:0 yichu;/溢出信號(hào) reg31:0 flout_c; reg1:0 yichu;/變量類型聲明 reg sign_a,sign_b,sign_c; /符號(hào)位 reg 7:0zhishu_a,zhishu_b,zhishu_c; /階碼 reg23:0zz_a,zz_b; reg47:0zz_c; /尾數(shù) reg jiayi; /中間變量 always(posedge clk or negedge rst)begin if(rst)begin sign_a=0; sign_b=0; zhishu_a=0; zhishu_b=0; zz_a=0; zz_b=0; end /輸入復(fù)位模塊 else if (en)begin sign_a=flout_a31; sign_b=flout_b31; zhishu_a=flout_a30:23; zhishu_b=flout_b30:23; zz_a=1b1,flout_a22:0; zz_b=1b1,flout_b22:0; end /使能賦初值模塊 end always(sign_a or sign_b or zhishu_a or zhishu_b or zz_a or zz_b)begin if(rst)begin zhishu_c=0; zz_c=0; sign_c=0; yichu=2b01; end /輸出復(fù)位模塊 else begin if(zhishu_a=255&(|zz_a22:0)begin zhishu_c=zhishu_a; yichu=2b11; zz_c46:23=zz_a; sign_c=sign_asign_b; end /數(shù)a不是一個(gè)數(shù)與數(shù)b任何數(shù)相乘都是不是一個(gè)數(shù) else if(zhishu_b=255&(|zz_b22:0)begin zhishu_c=zhishu_b; yichu=2b11; zz_c46:23=zz_b; sign_c=sign_asign_b; end /數(shù)b不是一個(gè)數(shù)與數(shù)a任何數(shù)相乘都是不是一個(gè)數(shù) else if(zhishu_a=255&(|zz_a22:0)begin if(zhishu_b=255&(|zz_b22:0)begin zhishu_c=zhishu_a; yichu=2b10; zz_c46:23=zz_a; sign_c=sign_asign_b; end /數(shù)a無(wú)窮與數(shù)b無(wú)窮相乘還是無(wú)窮 else if(zhishu_b=0) begin zhishu_c=zhishu_a; yichu=2b11; zz_c46:23=1b1; sign_c=sign_asign_b; end /數(shù)a無(wú)窮與數(shù)b0相乘為不是一個(gè)數(shù) else if(zhishu_b0) begin zhishu_c=zhishu_a; yichu=2b10; zz_c46:23=zz_a; sign_c=sign_asign_b; end /數(shù)a無(wú)窮與數(shù)b規(guī)格化數(shù)相乘為無(wú)窮 end else if(zhishu_b=255&(|zz_b22:0)begin if(zhishu_a=0) begin zhishu_c=zhishu_b; yichu=2b11; zz_c46:23=zz_b+1b1; sign_c=sign_asign_b; end /數(shù)b無(wú)窮與數(shù)a0相乘為不是一個(gè)數(shù) else if(zhishu_a0)begin zhishu_c=zhishu_b; yichu=2b10; zz_c46:23=zz_b; sign_c=sign_asign_b; end /數(shù)b無(wú)窮與數(shù)a規(guī)格化數(shù)相乘為無(wú)窮 end else if(zhishu_a=0)|(zhishu_b=0)begin yichu=2b00; zhishu_c=8b00000000; sign_c=0; if(|zhishu_a)begin zz_c46:23=zz_a; end else begin zz_c46:23=zz_b; end end /數(shù)a0與數(shù)b0相乘還為0 else begin sign_c=sign_asign_b; zhishu_c=zhishu_a+zhishu_b-127; zz_c=zz_a*zz_b; if(zz_c22=1)begin jiayi=1b0; zz_c47:23=zz_c47:23+1b1;/zz_c45:23 end else if(zz_c47=1)begin zz_c47:23=1b0,zz_c47:24; jiayi=1b1; end else begin jiayi=1b0; zz_c47:23=zz_c47:23;/zz_c45:23 end if(jiayi) begin zhishu_c=zhishu_c+1; end / 數(shù)a規(guī)格化數(shù)與數(shù)b規(guī)格化數(shù)相乘按照ieee-754標(biāo)準(zhǔn)進(jìn)行計(jì)算 if(zhishu_c=255&(|zz_c)begin zhishu_c=8hff; yichu=2b11; end /得出的結(jié)果為不是一個(gè)數(shù) if(zhishu_c=255&(|zz_c)begin zhishu_c=8hff; yichu=2b10; end /得出的結(jié)果為無(wú)窮 else if(zhishu_a+zhishu_b=127)begin yichu=2b00; zhishu_c=8b00000000; sign_c=0; end /得出的結(jié)果為0 else begin yichu=2b01; zhishu_c=zhishu_c; end /得出的結(jié)果為規(guī)格化數(shù) end end end always(posedge clk or negedge rst)begin if(rst)begin flout_c31=0; flout_c30:23=0; flout_c22:0=0; end /輸出結(jié)果的復(fù)位模塊 else begin flout_c31=sign_c; flout_c30:23=zhishu_c; flout_c22:0=zz_c45:23; end /輸出結(jié)果拼接 endendmodule2.4 Modelsim驗(yàn)證2.4.1 驗(yàn)證代碼timescale 1ns/100psmodule mux_tb(); reg 31:0flout_a,flout_b; reg clk,en,rst; wire 31:0flout_c; wire yichu; /聲明變量類型 mux dut(.flout_a(flout_a), .flout_b(flout_b), .clk(clk), .en(en), .rst(rst), .flout_c(flout_c), .yichu(yichu); /與源程序的例化dut相連 initial clk=0; always#20 clk=clk; /設(shè)置時(shí)鐘的變化 initial begin flout_b=32h00000001; flout_a=32h7f800000; en=1; rst=0; #100; rst=1; #800000; flout_b=32h20000001; flout_a=32h7f800000; #800000; flout_b=32h00000001; flout_a=32h7f800001; #800000; flout_b=32h20000001; flout_a=32h7f800001; #800000; flout_b=32h00000001; flout_a=32h20000001; #800000; flout_b=32h20000001; flout_a=32h20000001; #800000; flout_b=32h7f800000; flout_a=32h7f800000; #800000; flout_b=32h7f800001; flout_a=32h7f800001; #800000; flout_b=32h7f800001; flout_a=32h7f800000; #800000; flout_b=32h0af800001; flout_a=32h20000001; #800000; /設(shè)置輸入變量,使能信號(hào),復(fù)位信號(hào)隨時(shí)間發(fā)生變化 $stop; /task delay; / input 31:0mum; /repeat(num)(posedge clk)begin /repeat(100)(posedge clk); /end /endtask end initial begin $dumpfile(zk.vcd); $dumpvars; end /生成vcd文件endmodule2.4.2 驗(yàn)證波形圖2-5 Modelsim驗(yàn)證波形2.5 硬件調(diào)試2.5.1 基本說(shuō)明輸入flout_a的其中6位,一位符號(hào)位,階碼位的前兩位和尾數(shù)位的后三位;階碼的其他6位都設(shè)為1,尾數(shù)都設(shè)為0。輸入flout_b的一位符號(hào)位,前兩位階碼位和后三位尾數(shù)位;其余階碼位當(dāng)chose=1時(shí)為全1 ,當(dāng)chose=0時(shí)為全0,尾數(shù)的其它位為0。以下為乘數(shù)的輸入位規(guī)定:標(biāo)號(hào)類型符號(hào)位階碼位尾數(shù)位A無(wú)窮0/111000BNaN0/111001C正常0/101001表2-2以下為被乘數(shù)的輸入位規(guī)定:標(biāo)號(hào)類型符號(hào)位階碼位尾數(shù)位1無(wú)窮0/111000Chose=12NaN0/1110013正常0/101001標(biāo)號(hào)類型符號(hào)位階碼位尾數(shù)位1零0/100001Chose=02正常0/101001表2-3以下為根據(jù)以上標(biāo)號(hào)組合而成的結(jié)果的形式:結(jié)果為2位溢出標(biāo)志位,1位符號(hào)位,3位階碼位(前兩位為階碼最高位,第三位為階碼最低位),后四位為尾數(shù)后四位。結(jié)果如下組合A1A2B1B2C1C2A1B2A2C3溢出標(biāo)志11101111000110111101階碼前兩位,最后一位111111111111000010111111111011尾數(shù)后四位0001000000010001000100100000000100010010表2-4經(jīng)驗(yàn)證開(kāi)發(fā)板顯示結(jié)果與上表格相同。2.5.2 具體操作1. 如圖2-6所示,新建一個(gè)工程mux。圖2-6 新建工程2. 如圖2-7所示,向工程中添加mux_banzi.v。圖2-7 添加.v文件3. 綁定管腳。flout_a與flout_b以及chose,rst,en綁到15個(gè)輸入開(kāi)關(guān)上,flout_c以及yichu綁到10個(gè)燈上。NET flout_a5 IOSTANDARD = LVCMOS33;NET flout_a4 IOSTANDARD = LVCMOS33;NET flout_a3 IOSTANDARD = LVCMOS33;NET flout_a2 IOSTANDARD = LVCMOS33;NET flout_a1 IOSTANDARD = LVCMOS33;NET flout_a0 IOSTANDARD = LVCMOS33;NET flout_b5 IOSTANDARD = LVCMOS33;NET flout_b4 IOSTANDARD = LVCMOS33;NET flout_b3 IOSTANDARD = LVCMOS33;NET flout_b2 IOSTANDARD = LVCMOS33;NET flout_b1 IOSTANDARD = LVCMOS33;NET flout_b0 IOSTANDARD = LVCMOS33;NET flout_c7 IOSTANDARD = LVCMOS33;NET flout_c6 IOSTANDARD = LVCMOS33;NET flout_c5 IOSTANDARD = LVCMOS33;NET flout_c4 IOSTANDARD = LVCMOS33;NET flout_c3 IOSTANDARD = LVCMOS33;NET flout_c2 IOSTANDARD = LVCMOS33;NET flout_c1 IOSTANDARD = LVCMOS33;NET flout_c0 IOSTANDARD = LVCMOS33;NET yichu1 IOSTANDARD = LVCMOS33;NET yichu0 IOSTANDARD = LVCMOS33;NET flout_a5 LOC = P4;NET flout_a4 LOC = P3;NET flout_a3 LOC = R3;NET flout_a2 LOC = T1;NET flout_a1 LOC = T3;NET flout_a0 LOC = U2;NET flout_b5 LOC = V7;NET flout_b4 LOC = R5;NET flout_b3 LOC = R6;NET flout_b2 LOC = R7;NET flout_b1 LOC = U8;NET flout_b0 LOC = U9;NET flout_c7 LOC = P2;NET flout_c6 LOC = R2;NET flout_c5 LOC = U1;NET flout_c4 LOC = P5;NET flout_c3 LOC = R1;NET flout_c2 LOC = V1;NET flout_c1 LOC = U3;NET flout_c0 LOC = V4;NET yichu1 LOC = V9;NET yichu0 LOC = T8;NET chose LOC = V2;NET en LOC = U4;NET rst LOC = V5;NET clk LOC = E3;NET chose IOSTANDARD = LVCMOS33;NET clk IOSTANDARD = LVCMOS33;NET en IOSTANDARD = LVCMOS33;NET rst IOSTANDARD = LVCMOS33;4. 綜合、翻譯、適配。 點(diǎn)擊 Implement Design,選擇run 進(jìn)行綜合、翻譯等。當(dāng)進(jìn)行到Map時(shí)出現(xiàn)了錯(cuò)誤,原因大概是總線時(shí)鐘不能由下面的一排開(kāi)關(guān)控制,因此經(jīng)過(guò)查閱資料,將“NET clk CLOCK_DEDICATED_ROUTE = FALSE”這句話存入top.ucf中,即可將錯(cuò)誤降低為警告,繼續(xù)運(yùn)行。或?qū)r(shí)鐘綁定至E3管腳此問(wèn)題得以解決。5. 下載程序。將板子通過(guò) USB 供電,并將并口與計(jì)算機(jī)相連,打開(kāi)板子電源開(kāi)關(guān)。選擇所要下載的.jed 文件,待芯片成為綠色,右擊芯片,選擇 Program,當(dāng)出現(xiàn)program succeed,程序已經(jīng)下載到板子的芯片上,就可以通過(guò)改變輸入來(lái)觀察輸出跟料想的是否一樣。2.6 虛擬機(jī)下的DC綜合綜合出來(lái)的面積如圖2-8: 圖2-8 “report_area”綜合得到的時(shí)序如圖2-9:圖2-9 “report_timing”2.7 虛擬機(jī)下的SDF反標(biāo)仿真如圖2-10所示,得到的結(jié)果與反標(biāo)之前是相同的,反標(biāo)之后的門延遲與
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小廠掛靠公司合同協(xié)議
- 工廠手工改造合同協(xié)議
- 工商局注冊(cè)合同協(xié)議
- 美業(yè)店長(zhǎng)合同范本
- 供鋼材材料合同范本
- 個(gè)人小額借款合同
- 二手車庫(kù)管理合同范本
- 云南省大理州大理市2024-2025學(xué)年初三下第二次月考化學(xué)試題含解析
- 物業(yè)服務(wù)管理合同內(nèi)容
- 新疆哈密市石油高級(jí)中學(xué)2024-2025學(xué)年高三八月模擬生物試題含解析
- 2024年貴州省中考滿分作文《關(guān)鍵時(shí)刻我在這樣做》4
- 2024年社區(qū)工作者考試必考1000題含完整答案(全優(yōu))
- 手衛(wèi)生知識(shí)考核試題題庫(kù)及答案
- 專項(xiàng)突破03四則運(yùn)算實(shí)際問(wèn)題(應(yīng)用題)(8大考點(diǎn))(學(xué)生版)-四年級(jí)數(shù)學(xué)下冊(cè)(人教版)
- 加油站的法規(guī)法律合規(guī)管理
- 2025年江蘇省江寧城建集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2025年孝感道路運(yùn)輸從業(yè)資格證考試模擬試題
- 學(xué)生急救演練
- 學(xué)生禮儀課件
- 《物流操作流程》課件
- 2023無(wú)人機(jī)系統(tǒng)測(cè)評(píng)規(guī)范
評(píng)論
0/150
提交評(píng)論