16位ALUVHDL实现源程序_第1页
16位ALUVHDL实现源程序_第2页
16位ALUVHDL实现源程序_第3页
16位ALUVHDL实现源程序_第4页
16位ALUVHDL实现源程序_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、思考题:编写十六位运算器的VHDL程序一一MYALU实验任务:用CPT16的扩展实验板上的开关 K3、K2、K1、K0做为输入、八段数码管LED0.LED3做为输出,用VHDL语言编写程序,下载到EP1C6中,实现十六位模型机 的MY ALL功能见下表。实验说明: 在程序设计中,定义A 为 16 位累加器,其值由 K3 、 K2 两组开关输入;W 为 16 位工作寄存器,其值由 K1、 K0 两组开关 共输入;S2、S1、SO为运算功能控制位,接在K4开关的第2、1、0 个开关上,根据 S2、 S1、 S0 的不同, MYALL 实现不同功能D为运算结果输出,显示在四位八段管 LED3.LED

2、0上;CIn 为进位输入,由 K4 开关组的第 3 个开关输入;COut 为进位输出,用发光二极管 LO 显示其状态控制信号S运算000A+B; A+B+1001算术运算A-B ; A-B-1010A; A+1011A; A-1100AB101逻辑运算A+B110AB111Alibrary ieee;序包调用库程use asanxia is 体:电路外观配置port(inA : IN UNSIGNED(15 DOWNTO 0); - K3, K2 inAinW : IN UNSIGNED(15 DOWNTO 0); - K1, K0 inWoutLED : OUT STD_LOGIC_VECT

3、OR(15 DOWNTO 0); - LED3LED0 outLEDinC : IN STD_LOGIC_VECTORD(2OWNTO0); -Control Input inCCin:IN STD_LOGIC; -C Input CinCout: OUT STD_LOGIC - C Output L0 Cout);end asanxia;architecture arch of asanxia is 结构体:电路功能描述-本位和进位异或,产生不用and,因q(i)只能存暂存进位信号暂存各位数值加法:and inW(0)or有两个以上为 1 即产inW(i)xorsignal c:std_lo

4、gic_vector(15 downto 0); -signal q:UNSIGNED(15 downto 0); -beginprocess(inC,inA,inW,Cin)begincase inC iswhen 000=A+B ;A+B+1q(0)=inA(0)xor inW(0)xor Cin; c(0)=(inA(0)(inW(0)and Cin)or (inA(0)and Cin);-inA(0),inW(0),Cin生进位。gen1:for i in 1 to 15 loopq(i)=inA(i)xor储一位信息c(i)=(inA(i) and inW(i)or(inW(i)an

5、d c(i-1)or (inA(i)and c(i-1);- inA(0),inW(0),Cin 有两个以上为 1即产生进位 end loop;outLED=q(15)&q(14)&q(13)&q(12)&q(11)&q(10)&q(9)&q(8)&q(7)&q(6)&q(5)&q(4)&q(3)&q(2)&q(1)&q(0); -给输出赋值,将各位连缀起来CoutA-B ;A-B-1q(0)=inA(0)xor inW(0)xor Cin;c(0)=(notinA(0) and inW(0)orc(i-1);(inW(0)and Cin)or (not inA(0)and Cin);gen2

6、:for i in 1 to 15 loopinW(i)xorq(i)=inA(i)xorc(i)=(notinA(i) and inW(i)or(inW(i)and c(i-1)or (not inA(i)and c(i-1);end loop;outLED=q(15)&q(14)&q(13)&q(12)&q(11)&q(10)&q(9)&q(8)&q(7)& q(6)&q(5)&q(4)&q(3)&q(2)&q(1)&q(0); - 给输出赋值Coutif Cin=0thenoutLED=inA+1; - 执行a+1end if;Coutif Cin=0thenoutLED=inA-1;执

7、行a-1end if;Cout - 逻辑与: ABgen3:for i in 0 to 15 loopq(i)=inA(i)and inW(i);outLED - 逻辑或: A+Bgen4:for i in 0 to 15 loopq(i)=inA(i)or inW(i);outLEDgen5:for i in 0 to 15 loopq(i)=inA(i)xor inW(i);outLED -逻辑非:outLED=notinA(15)¬inA(14)& not inA(13)& not inA(12)¬ inA(11)¬ inA(10)& notinA(9)& not inA(8)¬ inA(7)& not inA(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论