16位ALUVHDL实现源程序
更新时间:2023-07-28 19:20:01 阅读量: 实用文档 文档下载
- 16位alu的设计原理图推荐度:
- 相关推荐
FPGA16位ALU的VHDL源程序,有详细注释。
思考题: 编写十六位运算器的VHDL程序——MYALU
实验任务:用CPT16 的扩展实验板上的开关K3 、K2、K1、K0做为输入、八段数码
管LED0..LED3做为输出,用VHDL语言编写程序,下载到EP1C6中,实现十六位模型机的MYALU 功能见下表。
实验说明: 在MYALU.VHD程序设计中,定义
A 为16位累加器,其值由K3 、K2 两组开关输入;
W 为16位工作寄存器,其值由K1、 K0 两组开关共输入;
S2、S1、S0 为运算功能控制位,接在K4开关的第2、1、0个开关上,根
据S2、S1、S0 的不同,MYALU 实现不同功能
D为运算结果输出,显示在四位八段管LED3..LED0上;
CIn 为进位输入,由K4 开关组的第3 个开关输入;
COut 为进位输出,用发光二极管L0 显示其状态。
逻辑功能:
library ieee; ------库程序包调用 use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
FPGA16位ALU的VHDL源程序,有详细注释。
entity asanxia is ------实体:电路外观配置
port
(inA : IN UNSIGNED(15 DOWNTO 0); -- K3, K2 inA
inW : IN UNSIGNED(15 DOWNTO 0); -- K1, K0 inW
outLED : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); -- LED3~LED0 outLED inC : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --Control Input inC
Cin:IN STD_LOGIC; --C Input k4.3 Cin
Cout: OUT STD_LOGIC -- C Output L0 Cout
);
end asanxia;
architecture arch of asanxia is ------结构体:电路功能描述
--中间变量
signal c:std_logic_vector(15 downto 0); --暂存进位信号
signal q:UNSIGNED(15 downto 0); --暂存各位数值
begin
process(inC,inA,inW,Cin)
begin
case inC is
when "000"=> ------加法:A+B ;A+B+1
q(0)<=inA(0)xor inW(0)xor Cin;
c(0)<=(inA(0) and inW(0))or (inW(0)and Cin)or (inA(0)and Cin); --inA(0),inW(0),Cin有两个以上为1即产生进位。 gen1:for i in 1 to 15 loop
q(i)<=inA(i)xor inW(i)xor c(i-1);
--本位和进位异或,产生不用and,因q(i)只能存储一位信息
c(i)<=( inA(i) and inW(i))or (inW(i)and 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); --给输出赋值,将各位连缀起来
Cout<=c(15);
when "001"=> ------减法:A-B ;A-B-1
q(0)<=inA(0)xor inW(0)xor Cin;
c(0)<=(not inA(0) and inW(0))or (inW(0)and Cin)or (not inA(0)and Cin);
gen2:for i in 1 to 15 loop
q(i)<=inA(i)xor inW(i)xor c(i-1);
c(i)<=(not inA(i) and inW(i))or (inW(i)and c(i-1))or (not inA(i)and c(i-1));
end loop;
FPGA16位ALU的VHDL源程序,有详细注释。
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); --给输出赋值
Cout<=c(15);
when "010"=>
if Cin='0'then
outLED<=inA+1; --执行a+1
end if;
Cout<='0';
when "011"=>
if Cin='0'then
outLED<=inA-1; --执行a-1
end if;
Cout<='0';
when "100"=> --逻辑与:AB
gen3:for i in 0 to 15 loop
q(i)<=inA(i)and inW(i);
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); --给输出赋值
end loop;
when "101"=> --逻辑或:A+B
gen4:for i in 0 to 15 loop
q(i)<=inA(i)or inW(i);
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); --给输出赋值
end loop;
when "110"=> --异或:A⊕B
gen5:for i in 0 to 15 loop
q(i)<=inA(i)xor inW(i);
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); --给输出赋值
end loop;
when others=> --逻辑非:
outLED<=not inA(15)¬ inA(14)& not inA(13)& not inA(12)¬ inA(11)& not inA(10)& not inA(9)& not inA(8)¬ inA(7)& not inA(6)& not inA(5)& not inA(4)¬ inA(3)& not inA(2)& not inA(1)& not inA(0);
Cout<='0';
end case;
end process;
end arch;
正在阅读:
16位ALUVHDL实现源程序07-28
倾听让课堂如此美丽04-15
黑色星期一作文500字06-25
计价期末作业 - 图文12-25
华联矿业年报(600882)年度报告2011年(采矿采选财务预算)山东华联04-13
牙膏市场调研报告06-02
辅导青年教师过程新性材料01-24
山西公务员考试申论热点:如何保障食品安全03-18
天正常用命令快捷键04-10
描写家乡景色的好段02-21
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 源程序
- ALUVHDL
- 实现
- 趣味运动会策划书
- 教学反思的主要方法
- 《公共政策概论》形考册答案
- 兰花科创2017年年度报告摘要
- 开关柜母排安装工艺规程
- 世界奢侈品之名表
- 他山之石产业研究系列报告第60期:固态锂电池或成行业下一个突破口
- 基于FPGA四路电子抢答器设计
- 从狗狗尿液查看健康状况
- 生鲜电商模式变革--基于微信O2O解决方案
- 苏教版小学语文三年级上册教案
- 2014年C14036课后测验100分
- 山西省孝义三中2011届高三复习班第四次模拟考试题政治
- 《整式及其加减》单元测试2
- 教你如何把电视当做电脑显示器
- 八年级上英语Unit6词组
- 高管薪酬制度的反思与重构
- 创建语言文字规范化示范校工作计划
- 七年级上学期期末测试题二
- 2014年度山东司法行政系统先进个人李荣凯