已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
源程序4位二进制并行进位加法器的源程序 ADDER4B.VHD如下LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER4B IS -四位二进制并行加法器 PORT(ci:IN STD_LOGIC; -低位进位a:IN STD_LOGIC_VECTOR3 DOWNTO 0); -4位加数b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4位被加数s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -4位和co:OUT STD_LOGIC -进位输出);END ADDER4B;ARCHITECTURE behave OF ADDER4B ISSIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0); -部定义的一个数据SIGNAL aa,bb:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN aa=0&a; -将4位加数矢量扩为5位,为进位提供空间 bb=0&b; -将4位被加数矢量扩为5位,为进位提供空间 INT=aa+bb+ci; - 相加 s=SINT(3 DOWNTO 0); coci,a=a(3 DOWNTO 0),b=b(3 DWONTO 0),s=(3 DOWNTO 0),co=CARRY_OUT); U2:ADDER4B -安装一个4位二进制加法器U2 PORT MAP(ci=CARRY_OUT,a=a(7 DOWNTO 4),b=b(7 DWONTO 4),s=(7 DOWNTO 4),co=co);END behave;加法器VHDL程序如下LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY adder IS port(a:in std_logic; -被加数ab:in std_logic; -加数bci:in std_logic; -输入进位s:out std_logic; -结果输出co:out std_logic -输出进位);end adder;architecture behave of adder is signal tem: std_logic; -暂存signal stem: std_logic; begintem=a xor b; -中间变量stem=tem xor ci; -结果co=(tem and ci) or (a and b); -进位输出s=stem; -输出end behave;4位二进制并行进位减法器的源程序suber.VHD如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sub4 IS PORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4位被减数b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4位减数ci:IN STD_LOGIC; -输入进位s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -结果输出co:OUT STD_LOGIC -输出进位);end suber;architecture behave of suber iscomponent adder is -引用加法器的模块 port(a:in std_logic; b:in std_logic; ci:in std_logic; s:out std_logic; co:out std_logic );end component;signal btem:std_logic_vector(3 downto 0); -减数寄存signal ctem:std_logic_vector(4 downto 0); - 进位寄存signal stem:std_logic_vector(3 downto 0); - 结果寄存beginbtem(3 downto 0)=not b(3 downto 0); -先把减数求反ctem(0)=not ci; -输入的进位也求反,从而对减数求补码g1:for I in 0 to 3 generate -连用4位全加器add:adder port map (a(i),btem(i),ctem(i),stem(i),ctem(i+1);end generate;s(3 downto 0)=stem(3 downto 0); -结果输出co=not ctem(4); -求反输出进位end behave;乘法器的源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;Entity mul is Port( a:in std_logic_vector(3 downto 0); -4位被乘数b:in std_logic_vector(3 downto 0); -4位乘数 y:out std_logic_vector(7 downto 0) -乘积);end mul;architecture arch of mul isbeginy(7 downto 0) -开始状态if str=1 then -收到启动信号state=one; -转到状态oneatem(3 downto 0)=a(7 downto 4); -把高4位放到减法器被减数端 btem(3 downto 0)=b(3 downto 0); -把除数放到减法器减数端ain(7 downto 0)=a(7 downto 0);-寄存被除数bin(3 downto 0) -第一次移位if cotem=0 then -被除数高4位小于除数,溢出!state=eror; -转到出错状态else -不溢出ain(3 downto 1)=ain(2 downto 0); -被除数做移位ain(0)=not cotem; -在最低位接收该位商值atem(3 downto 0)=ain(6 downto 3); -把除数寄存器高4位输到减法器,作为减法器被减数state -再做3此移位if n=2 then -第四次移位state=three; -是,则跳转到下一状态n:=0; -移位计数器清零else -否则 state=two; -还回到这个状态 n:=n+1; -移位计数器加1 end if; if cotem=0 then -不够减,有借位 atem(3 downto 1)=stem(2 downto 0); -减法器结果移位作为下一次的输入else -够减,没有借位 atem(3 downto 1)=atem(2 downto 0); -结果输出移位作为下一次的输入end if; ain(3 downto 1)=ain(2 downto 0); -结果寄存器左移一位 ain(0)=not cotem; -这次运算借位输出,输入到寄存器ain最后一位 atem(0) -正常运算结果输出 s(3 downto 1)=ain(2 downto 0); -寄存器ain低3位作为输出结果高3位 s(0)=not cotem; -最后一次减法运算的借位输出求反作为结果输出最低位if cotem=0 then -最后一次减法运算,够减(无借位) y(3 downto 0)=atem(3 downto 0); -则减法器输出结果为整个除法的余数else -否则,不够减 y(3 downto 0)=atem(3 downto 0); -则最后一次减法运算的被减数为整个除法的余数end if; atem(3 downto 0)= 0; -寄存器清零 btem(3 downto 0)= 0; -寄存器清零 state -溢出状态state=start; -回到开始状态atem(3 downto 0)= 0; -寄存器清零btem(3 downto 0)= 0; -寄存器清零end case;end if;end process p2;citem=0; -4位减法器借位输入接地U1:suber port map(atem,btem,citem,stem,cotem);end behave; 数字按键译码电路VHDL语言描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity numdecoder isport(reset:in std_logic;inclk:std_logic;innum:std_logic_vetctor(9 downto 0);outnum:buffer std_logic_vector(3 woento 0);outflag:out std_logic);end;architecture behave of numdecoer isbegin if reser=1then outnumoutnum=”0000”;outflagoutnum=”0001”;outflagoutnum=”0010”;outflagoutnum=”0011”;outflagoutnum=”0100”;outflagoutnum=”0101”;outflagoutnum=”0110”;outflagoutnum=”0111”;outflagoutnum=”1000”;outflagoutnum=”1001”;outflagoutnum=outnum;outflag=0; -不按键时保持end case;end if;end process;end behave; 7段译码器的vhdl语言描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity vdecode isport(indata:in std_logic_vector(3 downto 0);outdata:out std_logic_vector(0 to 6);End;Atchitecture behave of vdecode isBeginWith indata selectOutdata=”1111110”when”0000”, ”0110000”when”0000”,”1111001”when”0000”,”0110011”when”0000”,”1011011”when”0000”,”1011111”when”0000”,”1110000”when”0000”,”1111111”when”0000”,”1111110”when”0000”, ”1111110”when”0000”,”1111011”when”0000”,”0000000”when others;End behave;8位二进制数转换成个位、十位、百位的进程:Ctrview:process(c,clk)Begin If c=1then view1=”0000”;view2=”0000”;view=”0000”;viewstepktemp=keep;viewstepif ktemp=”11001000”then view1=”0010”;ktemp=”01100100”then view1=”0001”;ktemp=ktemp-“01100100”;elsif view1=”0000”;end if; viewstepif ktemp=”01011010”thenview2=”1001”;ktemp=”01010000”then view2=”1000”;ktemp=”01000110”then view2=”0111”;ktemp=”00111100”then view2=”0110”;ktemp=”00110010”then view2=”0101”;ktemp=”00101000”then view2=”0100”;ktemp=”00011110”then view2=”0011”;ktemp=”00010100”then view2=”0010”;ktemp=”00001010”then view2=”0001”;ktemp=ktemp-“00001010”;elsif view2=”0000”;end if; viewstepview3=ktemp(3 downto 0);viewstepNULL;end case;end if;end process ctrview; 计算器的VHDL语言LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;Entity cal is Port(inclk:in std_logic; num:in std_logic_vector(9 downto 0); plus: in std_logic; subt: in std_logic; mult: in std_logic; mdiv: in std_logic; equal: in std_logic; c: in std_logic; onum1,onum2,onum3:out std_logic_vector(0 to0) );end cal;architecture behave of cal istype state is(takenum,hundred,ten,one);signal viewstep: state;signal ktemp: std_logic_vector(7 downto 0);signal flag: std_logic;signal fl: std_logic;signal acc: std_logic_vector(7 downto 0);signalreg: std_logic_vector(7 downto 0);signal keep: std_logic_vector(7 downto 0);signal ans:std_logic_vector(7 downto 0);signal dans: std_logic_vector(3 downto 0);signal numbuff: std_logic_vector(3 downto 0);signal vf: std_logic;signal strdiv: std_logic;signal numclk: std_logic;signal clear:std_logic;signal inplus: std_logic;signal insubt: std_logic;signal inmult: std_logic;signal inmdiv: std_logic;signal inequal: std_logic;signal view1,view2,view3:std_logic_vector(3 downto 0);signal cou: std_logic_vector(1 downto 0);signal clk_gg: std_logic_vector(11 downto 0);signal clk: std_logic;signal clk: std_logic;component numbercoder isport(reset: in std_logic;inclk: in std_logic;innum: in std_logic_vector(9 downto 0); outnum: buffer std_logic_vector(3 downto 0);outflag: out std_logic);end component;component vdecode is port(indata: in std_logic_vector(3 downto 0);outdata: out srd_logic_vector(0 to 6);end component;component diver isport(a: in std_logic_vector(7 downto 0);b: in std_logic_vector(3 downto 0); clk: in std_logic;str: in std_logic;s: in std_logic_vector(3 downto 0);y: in std_logic_vector(3 downto 0););end component;begininum1: numdecoder port map (c,clk,num,numbuff,numclk); clock: process(inclk,c)beginif c=1 thenclk_gg(11 downto 0)=”0”;elsif inclkevent and inclk=1 thenclk_gg(11 downto 0)=clk_gg(11 downto 0)+1;end if;end process clock;clk=clk_gg(11);pacecal: process(c,clk)beginif c=1theninplus=0;insubt=0;inmult=0;inmdiv=0;elsif clkevent and clk=1then if plus=1 theninplus=1;insubt=0;inmult=0; inmdiv=0; elsif subt=1 theninplus=0;insubt=1;inmult=0; inmdiv=0;elsif mult=1 theninplus=0;insubt=0;inmult=1; inmdiv=0;elsif mdiv=1 theninplus=0;insubt=0;inmult=0; inmdiv=1;end if;end if;end process pacecal;ctrflag: process(c,clk)beginif c=1 thenflag=0;elsif clkevent and clk=1 then if inplus=1 or insubt=1 or inmult=1 or inmdiv=1 then flag=1;else flag=0;end if;ctrfirstnum: process(c,clk)beginif c=1 thenacc=”00000000”;elsif numclkevent and numclk=0 then if flag=0 thenacc=acc*”1010”+numbuff;end if;enf if;end process ctrfirstnum;ctrsecondnum: process(c,clk)beginif c=1 or clear=1 thenreg=”00000000”;fl=0elsif numclkevent and numclk=0 then if flag=1 thenfl=1;reg=reg*”1010”+numbuff;end if;end if;end process ctrsecondnum;ctrclear: process(c,clk)beginif c=1 then clear=0;elsif clkevent and clk=1 then if plus=1 or subt=1 thenclear=1;else clear=0;end if;end if;end process ctrclear;ctrinequal: process(c,clk)beginif c=1 theninequal=0;elsif clkevent and clk=1 then if plus=1 or subt=1 or mult=1 or mdiv=1 or equal=1 theninequal=1;else inequal=0;end if;end if;end process ctrinequal;ctrcou: process(c,inequal)beginif c=1 thencou=”00”;elsif inequalevent and inequal=1 then if cou=”10” thencou=cou;else cou=cou+1;end if;end if;end process ctrcou;ctrcal: process(c,inequal)beginif c=1 thenans=”00000000”;strdiv=0;elsif inequalevent and inequal=1 then if flag=1 thenif inplus=1 thenif cou=”10” thenans=ans+reg;else ans=acc+reg;end if;elsif insubt=1 thenif cou=”10” thenans=ans-reg;else ans=acc-reg;end if; elsif inmult=1 thenif acc=00001111” and reg=”00001111” thenans=acc(3 downto 0)*reg(3 downto 0);else ans=”00000000”;end if; elsif inmdiv=1 thenstrdiv=1;end if; else strdiv=0; end if;end if;end process ctrcal;d1: div port map (acc,reg(3 downto 0),clk,strdiv,dans);ctrvf: process(c,equal)beginif c=1 thenvf=0;elsif equal;event and equal=1 thenvf=1;end if;end process ctrvf;ctrkeep: process(c,clk)beginif c=1 thenkeep=”00000000”;elsif clkevent and clk=0 thenif flag=0 thenkeep=acc;elsif flag=1 and fl=1 and vf=0 thenkeep=reg;elsif flag=1 and fl=0 and vf=0 and cou=”10” thenkeep=ans;elsif flag=1 and vf=1 then if inmdiv=0 thenkeep=ans;elsekeep(3 downto 0)=dans; end if; end if;end if;end process ctrkeep;ctrview: process(c,clk)begin if c=1 thenview1=”0000”;view2=”0000”;view3=”0000”;viewstep ktemp=keep; viewstepif ktemp=”11001000” then view1=”0010”; ktemp=”01100100” thenview1=”0001”; ktemp=ktemp-“01100100”;else view1=”0000”;end if;viewstep if ktemp=”01011010” thenview2=”1001”; ktemp=”01010000” thenview2=”1000”; ktemp=”01000110” thenview2=”0111”; ktemp=”00111100” then view2=”0110”; ktemp=”00110010” then view2=”0101”; ktemp=”00101000” then view2=”0100”; ktemp=”00011110” then view2=”0011”; ktemp=”00010100” then view2=”0010”; ktemp=”00001010” then view2=”0001”; ktemp=ktemp-“00001010”;else view2=”0000”;end if;viewstep view3=ktemp(3 downto 0); viewstepnull;end case;end if;end process ctrview;v1: vdecode port map (view1,onum1); v2: vdecode port map (view2,onum2); v3: vdecode port map (view3,onum3); end c; 39大学本科生毕业设计(论文)撰写规范本科生毕业设计(论文)是学生在毕业前提交的一份具有一定研究价值和实用价值的学术资料。它既是本科学生开始从事工程设计、科学实验和科学研究的初步尝试,也是学生在教师的指导下,对所进行研究的适当表述,还是学生毕业及学位资格认定的重要依据。毕业论文撰写是本科生培养过程中的基本训练环节之一,应符合国家及各专业部门制定的有关标准,符合汉语语法规范。指导教师应加强指导,严格把关。1、论文结构及要求论文包括题目、中文摘要、外文摘要、目录、正文、参考文献、致谢和附录等几部分。1.1 题目论文题目应恰当、准确地反映论文的主要研究内容。不应超过25字,原则上不得使用标点符号,不设副标题。1.2 摘要与关键词1.2.1 摘要本科生毕业设计(论文)的摘要均要求用中、英两种文字给出,中文在前。摘要应扼要叙述论文的研究目的、研究方法、研究内容和主要结果或结论,文字要精炼,具有一定的独立性和完整性,摘要一般应在300字左右。摘要中不宜使用公式、图表,不标注引用文献编号,避免将摘要写成目录式的内容介绍。1.2.2 关键词关键词是供检索用的主题词条,应采用能覆盖论文主要内容的通用技术词条(参照相应的技术术语标准),一般列35个,按词条的外延层次从大到小排列,应在摘要中出现。1.3 目录目录应独立成页,包括论文中全部章、节的标题及页码。1.4 论文正文论文正文包括绪论、论文主体及结论等部分。1.4.1 绪论绪论一般作为论文的首篇。绪论应说明选题的背景、目的和意义,国内外文献综述以及论文所要研究的主要内容。文管类论文的绪论是毕业论文的开头部分,一般包括说明论文写作的目的与意义,对所研究问题的认识以及提出问题。绪论只是文章的开头,不必写章号。毕业设计(论文)绪论部分字数不多于全部论文字数的1/4。1.4.2 论文主体论文主体是论文的主要部分,要求结构合理,层次清楚,重点突出,文字简练、通顺。论文主体的内容要求参照大学本科生毕业设计(论文)的规定第五章。论文主体各章后应有一节“本章小结”。1.4.3 结论结论作为单独一章排列,但不加章号。结论是对整个论文主要成果的归纳,要突出设计(论文)的创新点,以简练的文字对论文的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中考物理复习主题单元13第35课时家庭电路课件
- 中考物理复习主题单元5第12课时大气压强流体压强与流速的关系课件
- 冀少版八年级生物上册第三单元第一、二章复习提升课件
- 《会计基础与实训》第一学期教案
- 电车环保行动新纪元-推动绿色电车可持续发展
- 厨房装修翻新合作协议
- 无人驾驶技术债务承诺书
- 建筑工程延期合同
- 幼儿园合作共赢协议
- 家庭地质馆别墅施工合同
- GB∕T 5001-2018 日用陶瓷分类
- 2022年化学检验员三级理论考试题库及答案
- 康复医学发展的历史课件
- 幼儿园教师月度KPI绩效考核表
- u8-HR案例及数据-修改版1
- 《公共事业管理学》自学指导书学习资料
- 员工心理健康状况测试.
- 部编版五年级上册道德与法治《期中考试试卷》(附答案解析)
- 药学专业高水平专业群建设项目建设方案
- 从ChinaSCAN看中国ICU侵袭性真菌感染课件
- 升压站通信系统设备安装施工方案
评论
0/150
提交评论