有符號位的除法器課程設計報告_第1頁
有符號位的除法器課程設計報告_第2頁
有符號位的除法器課程設計報告_第3頁
有符號位的除法器課程設計報告_第4頁
有符號位的除法器課程設計報告_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

PAGE2有符號5位整數(shù)除法器設計與制作1.課程設計的性質(zhì)、目的和任務創(chuàng)新精神和實踐能力二者之中,實踐能力是基礎和根本。這是由于創(chuàng)新基于實踐、源于實踐,實踐出真知,實踐檢驗真理。實踐活動是創(chuàng)新的源泉,也是人才成長的必由之路。通過課程設計的鍛煉,要求學生掌握電路的一般設計方法,具備初步的獨立設計能力,提高綜合運用所學的理論知識獨立分析和解決問題的能力,培養(yǎng)學生的創(chuàng)新精神。2.課程設計基本要求掌握現(xiàn)代大規(guī)模集成數(shù)字邏輯電路的應用設計方法,進一步掌握電子儀器的正確使用方法,以及掌握利用計算機進行電子設計自動化(EDA)的基本方法。3.設計課題要求設計一個兩個五位數(shù)相除的整數(shù)除法器。用發(fā)光二極管顯示輸入數(shù)值,用7段顯示器顯示結(jié)果十進制結(jié)果。除數(shù)和被除數(shù)分兩次輸入,在輸入除數(shù)和被除數(shù)時,要求顯示十進制輸入數(shù)據(jù)。采用分時顯示方式進行,可參見計算器的顯示功能。4.設計內(nèi)容:有符號5位整數(shù)除法器設計與制作根據(jù)系統(tǒng)設計要求,系統(tǒng)設計采用自頂向下的設計方法。頂層設計采用原理圖設計方式,系統(tǒng)的整體組裝設計原理圖如下圖所示,它由除法器輸入模塊、除法實現(xiàn)模塊和顯示譯碼模塊三部分組成。4.1除法器輸入模塊本除法器的被除數(shù)和除數(shù)(有符號5位整數(shù))分兩次輸入,設置兩個標志位A和B,A和B的初值均為0。當A=1,B=0時,輸入為被除數(shù);當A=1,B=1時,輸入為除數(shù)。將被除數(shù)和除數(shù)分別送至顯示電路,以十進制形式顯示,同時送入除法實現(xiàn)電路進行除法運算。輸入模塊的源程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSHURU1ISPORT(LOADA,LOADB,CLK:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(4DOWNTO0);A,B:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDSHURU1;ARCHITECTUREBEHAVEOFSHURU1ISBEGINPROCESS(LOADA,LOADB,DIN,CLK)BEGINIF(CLK'EVENTANDCLK='1')THENIF(LOADA='1'ANDLOADB='0')THENA<=DIN;ENDIF;IF(LOADA='1'ANDLOADB='1')THENB<=DIN;ENDIF;ENDIF;ENDPROCESS;ENDBEHAVE;生成模塊如圖(1-1)所示:如圖(1-1)本模塊的仿真波形如圖(1-2)所示:如圖(1-2)4.2除法實現(xiàn)模塊本模塊作用是將輸入的被除數(shù)和除數(shù)進行除法運算,輸出商和余數(shù)。計算前在A和B端口輸入被除數(shù)和除數(shù),然后在Load線上送高電平,把數(shù)據(jù)存到除法計算電路內(nèi)部,然后經(jīng)過若干個時鐘周期,計算出商和余數(shù),并在SH和YU端輸出。其實現(xiàn)方法是,將除法器分為兩個狀態(tài):等待狀態(tài)與運算狀態(tài)。開始時除法器處于等待狀態(tài),在該狀態(tài),在每一時鐘上升沿,采樣Load信號線,若是低電平,則仍處于等待狀態(tài),如果采樣到高電平,除法器讀取A,B數(shù)據(jù)線上的輸入數(shù)據(jù),保存到內(nèi)部寄存器a_r,b_r,置sh_r為0,yu_r為a_r,判斷除數(shù)是否為零,若不為零則進入運算狀態(tài)。在運算狀態(tài),設置符號位寄存器fu_r,將a_r和b_r的最高位(即符號位)異或后賦給fu_r。在每一時鐘上升沿,除法器先比較yu_r,b_r低四位的大小,若yu_r大于等于b_r,則sh_r增加一,yu_r=yu_r–b_r(均為低四位),仍處于運算狀態(tài)。若yu_r小于b_r的低四位,則說明運算已經(jīng)完成,再將sh_r、yu_r填上符號位作為結(jié)果輸出到SH,YU數(shù)據(jù)線,再次回到等待狀態(tài),等待下一次的除法運算。除法實現(xiàn)模塊的源程序所下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCHUFAISPORT(CLK,LOAD:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(4DOWNTO0);B:INSTD_LOGIC_VECTOR(4DOWNTO0);SH,YU:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDCHUFA;ARCHITECTUREDIVOFCHUFAISBEGINPROCESS(CLK)VARIABLEA_R,B_R,SH_R,YU_R,FU:STD_LOGIC_VECTOR(4DOWNTO0);VARIABLESTATE:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENCASESTATEISWHEN'0'=>IFLOAD='1'THENA_R:=A;B_R:=B;YU_R:="00000";YU_R(3DOWNTO0):=A_R(3DOWNTO0);SH_R:="00000";STATE:='1';ELSESTATE:='0';ENDIF;WHEN'1'=>IFB_R="00000"THENSH_R:="00000";YU_R:="00000";STATE:='0';ELSIFYU_R(3DOWNTO0)>=B_R(3DOWNTO0)THENYU_R(3DOWNTO0):=YU_R(3DOWNTO0)-B_R(3DOWNTO0);SH_R(3DOWNTO0):=SH_R(3DOWNTO0)+1;STATE:='1';ELSEFU:="00000";FU(4):=A_R(4)XORB_R(4);SH<=SH_RORFU;YU<=YU_RORFU;STATE:='0';ENDIF;WHENOTHERS=>ENDCASE;ENDIF;ENDPROCESS;ENDDIV;生成模塊如圖(2-1)所示:圖(2-1)本模塊的仿真波形如圖(2-2)所示:圖(2-2)4.3除法器顯示譯碼模塊模塊1本模塊的作用是通過標志位A,B的不同狀態(tài)來區(qū)分被除數(shù),除數(shù),商和余數(shù),將他們送至輸出端進行顯示。當A=1,B=0時,將被除數(shù)送至輸出端;A=1,B=1時,將除數(shù)送至輸出端;除法運算結(jié)束后,A=0,B=1時,將商送至輸出端;A=0,B=0時,將余數(shù)送至輸出端;從而實現(xiàn)分時顯示。顯示模塊1的源程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_arith.ALL;USEIEEE.STD_LOGIC_unsigned.ALL;ENTITYXIANSHI1ISPORT(A:INSTD_LOGIC;B:INSTD_LOGIC;LOAD:INSTD_LOGIC;BEICHU:INSTD_LOGIC_VECTOR(4DOWNTO0);CHU:INSTD_LOGIC_VECTOR(4DOWNTO0);SH:INSTD_LOGIC_VECTOR(4DOWNTO0);YU:INSTD_LOGIC_VECTOR(4DOWNTO0);ZJ:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDXIANSHI1;ARCHITECTUREMYOFXIANSHI1ISBEGINPROCESS(BEICHU,CHU,SH,YU,A,B)BEGINIF(A='1'andB='0')THENZJ<=BEICHU;ELSIF(A='1'andB='1')THENZJ<=CHU;ELSIF(A='0'andB='1')THENZJ<=SH;ELSEIF(LOAD='1')THENZJ<=YU;ELSEZJ<="00000";ENDIF;ENDIF;ENDPROCESS;ENDMY;生成模塊如圖(3-1)所示:圖(3-1)模塊2:本模塊的作用是采用3個8段顯示器分時顯示有符號的十進制結(jié)果。模塊2的源程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_arith.ALL;USEIEEE.STD_LOGIC_unsigned.ALL;ENTITYXIANSHI2ISPORT(ZJ:INSTD_LOGIC_VECTOR(4DOWNTO0);FU:OUTSTD_LOGIC_VECTOR(7DOWNTO0);SHI:OUTSTD_LOGIC_VECTOR(7DOWNTO0);GE:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDXIANSHI2;ARCHITECTUREMYOFXIANSHI2ISBEGINPROCESS(ZJ)BEGINIF(ZJ(4)='0')THENFU<="11111111";ELSEFU<="10111111";ENDIF;IF(ZJ(3DOWNTO0)>"1001")THENSHI<="11111001";ELSESHI<="11111111";ENDIF;CASEZJ(3DOWNTO0)ISWHEN"0000"=>GE<="11000000";WHEN"0001"=>GE<="11111001";WHEN"0010"=>GE<="10100100";WHEN"0011"=>GE<="10110000";WHEN"0100"=>GE<="10011001";WHEN"0101"=>GE<="10010010";WHEN"0110"=>GE<="10000010";WHEN"0111"=>GE<="11011000";WHEN"1000"=>GE<="10000000";WHEN"1001"=>GE<="10010000";WHEN"1010"=>GE<="11000000";WHEN"1011"=>GE<="11111001";WHEN"1100"=>GE<="10100100";WHEN"1101"=>GE<="10110000";WHEN"1110"=>GE<="10011001";WHEN"1111"=>GE<="10010010";WHENOTHERS=>GE<="11111111";ENDCASE;ENDPROCESS;ENDMY;生成模塊如圖(3-2)所示:圖(3-2)本模塊的仿真波形如圖(3-3)所示:圖(3-3)5.調(diào)試與仿真結(jié)果總電路如下圖:仿真結(jié)果如下:6.調(diào)試中遇到的問題及解決方法第一次調(diào)試時數(shù)碼管顯示了一些亂碼,懷疑是顯示模塊出了問題,便想到改程序。經(jīng)檢查發(fā)現(xiàn),由于存在兩個process,之間產(chǎn)生沖突,于是我就把顯示電路拆成了兩個模塊,利用了一個中間量進行數(shù)值傳遞,這樣就避免了兩個process在一個結(jié)構(gòu)體中因敏感信號而產(chǎn)生沖突。第二次調(diào)試時,發(fā)現(xiàn)除法器總是會顯示上一次除法的結(jié)果,我就想到一定是除法寄存器在下一次運算前沒有清零,于是檢查并改動了除法運算模塊,是結(jié)果正確。以上是調(diào)試過程中存在比較大的問

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論