8位 ALU 算术逻辑单元 FPGA 设计 VHDL Quartus

发布时间:2026/7/24 13:58:47
8位 ALU 算术逻辑单元 FPGA 设计 VHDL Quartus 名称8位 ALU 算术逻辑单元 FPGA 设计 VHDL Quartus软件Quartus语言VHDL功能介绍该工程实现了一个以 8 位 ALU 为核心的 VHDL 数字系统适合学习 FPGA 中组合逻辑模块的拆分、功能选择控制、测试平台编写以及顶层板级接口连接。设计包含加法/减法器、桶形移位器、ALU、数码管译码和顶层控制等内容能够从基础运算单元逐步扩展到可在开发板接口上观察的完整工程结构。 ALU 根据 Fsel 选择不同处理方式既包括加减等基础算术操作也包括取反、异或非等逻辑操作。加减法模块使用 Sub 信号切换模式桶形移位器使用 LRn、K 与 Ci 分别控制移位方向、移位量和移入值。这样的模块划分清晰便于逐个理解、独立仿真和替换扩展。 顶层 DE10_LITE 定义了时钟、按键、拨码开关、LED 与六位数码管接口工程可作为 Quartus 下 VHDL ALU 课程设计、实验作业和板级接口练习的参考。付费内容包含 Quartus 工程、VHDL 源码、约束配置及相关仿真资料。运行环境硬件描述语言VHDL 开发软件Intel Quartus 工程包含 Quartus 工程文件、管脚分配文件和 SDC 时序约束文件可在 Quartus 中打开工程后进行编译、仿真配置与下载验证。设计思路本设计围绕 8 位算术逻辑单元构建采用分层 VHDL 结构实现基础算术、逻辑处理和结果显示。输入数据由顶层接口接入ALU 根据功能选择信号 Fsel 决定当前运算类型并将运算结果交由显示转换模块输出便于在数码管和 LED 接口上直观观察结果。 算术部分由 AddSub 模块完成加法与减法控制Sub 为低电平时执行加法Sub 为高电平时执行减法。移位功能由 Barrel Shifter 模块实现LRn 控制左右移方向K 指定移位位数Ci 作为移入数据因此可用于理解组合移位器的结构与控制方式。 ALU 的功能选择覆盖常规运算与指定逻辑运算。例如 Fsel 为 0001 时保持不执行运算0111 对应 A-B1000 对应 B 取反1011 对应异或非运算。工程同时配套测试平台可用于对加减法、移位器和 ALU 的典型输入组合进行仿真验证。模块结构DE10_LITE顶层接口模块连接时钟、按键、拨码开关、LED 与数码管。 ALU8 位算术逻辑单元根据 Fsel 完成运算类型选择。 AddSub加法/减法模块使用 Sub 控制加减模式。 BrlSht桶形移位模块支持左右移、可配置移位位数与移入值。 FA全加器基础单元。 MUX21二选一多路选择模块。 bin2hex二进制结果到七段数码管显示编码的转换模块。 ALU_tb、AddSub_tb、BrlSht_tb、SAM_tb对应功能模块的仿真测试平台。开发板验证工程提供了顶层管脚分配文件与时序约束文件DE10_LITE 顶层将时钟、按键、拨码开关、LED 和六位数码管接口集中定义可用于开发板上的下载与接口对应验证。结合工程编译输出可作为 VHDL 算术逻辑单元及其板级显示、输入控制连接的参考实现。演示视频提供 ALU 相关仿真演示视频可配合工程观察运算模块与控制逻辑的运行过程。演示视频请关注公众号后获取对应资料查看。演示视频请关注公众号后获取对应资料查看。演示视频请关注公众号后获取对应资料查看。仿真图/仿真说明/设计文档图片设计文档给出了 AddSub、BrlSht 和 8 位 ALU 的仿真说明与截图。AddSub 仿真用于观察 Sub 切换加减法后的结果BrlSht 仿真用于观察 LRn 控制左右移、K 控制移位位数、Ci 控制移入值的变化ALU 仿真展示了不同 Fsel 编码对应的运算选择及输出结果。部分代码以下展示顶层模块DE10_LITE的部分代码完整代码可关注下方公众号卡片获取。entity DE10_LITE is port ( -- CLOCK ADC_CLK_10: in std_logic; MAX10_CLK1_50: in std_logic; MAX10_CLK2_50: in std_logic; -- SEG7 HEX0: out std_logic_vector(7 downto 0); HEX1: out std_logic_vector(7 downto 0); HEX2: out std_logic_vector(7 downto 0); HEX3: out std_logic_vector(7 downto 0); HEX4: out std_logic_vector(7 downto 0); HEX5: out std_logic_vector(7 downto 0); -- KEY (debounced) KEY: in std_logic_vector(1 downto 0); -- LED LEDR: out std_logic_vector(9 downto 0); -- SW SW: in std_logic_vector(9 downto 0)); end DE10_LITE;代码获取下方公众号“FPGA代码设计学习资料”