简单计算器
一、设计分析 1、功能描述
设计一个简单0-9数之间的加、减、乘法运算的计算器,,输入和输出均可以显示在数码管上。
2、实现工具
1、用VHDL 语言文本形式输入;
2、maxplusII行语言编写时序仿真和综合。
二、设计思想
采用自顶向下的设计方式,分层进行设计。设计分为五个模块进行; 计算器模块、八位二进制数转化成8421BCD码模块,四选一数据选择器模块,七段显示译码器模块、模4计数器模块、模8计数器块、3—8译码器块。顶层设计可以完全独立于目标器件芯片物理结构的硬件描述语言。使用VHDL模型在所综合级别上对硬件设计进行说明、建模和仿真。
1、顶层原原理框图
2、具体实现
1、计算器模块、
2、八位二进制数转化成8421BCD码模块
3、四选一数据选择器模块
4、七段显示译码器模块
5、模4计数器模块
6、模8计数器块
7、3—8译码器块
三、设计过程 1、建立工程
建立一个Project,命名为jiandanjisuanqi。将各个模块生成的文件放在同一个文件夹下。
2、文本输入
将各个模块的VHDL代码输入,保存并综合。
3、仿真
建立各个模块的gdf图,设置输入波形并仿真。
4、顶层原理图输入
利用各个模块生成的sym文件建立顶层原理图,编译并仿真。
5、硬件实现
实验室提供的器件为FLEX10K,型号为EPF10K10LC84-4,将文件下载到器件当中,在实验箱中进行模拟。
四、 整体框图
五、VHDL部分代码及说明 1、计算器模块、
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL; entity jisuanqi is
Port (a,b: in STD_LOGIC_VECTOR (3 downto 0); sel:in STD_LOGIC_VECTOR (1 downto 0);
-----加减乘控制端
s: out STD_LOGIC_VECTOR (7 downto 0)); end jisuanqi;
architecture Behavioral of jisuanqi is
signal q1 ,q2: STD_LOGIC_VECTOR (3 downto 0); signal q3: STD_LOGIC_VECTOR (7 downto 0); signal q4: STD_LOGIC_VECTOR (1 downto 0);
begin q1<=a;
q2<=b; q4<=sel;
process(q4,q3) begin case q4 is
when \ q3<=q1+q2; s<=q3;
when \ if(q1>q2)then
----加减乘算法
q3<= q1-q2; s<=q3; else
q3<=q2-q1; s<=q3; end if;
when \ q3<=q1*q2; s<=q3;
when \ q3<=q1*q2; s<=q3;
when others=> q3<=\s<=q3;
end case; end process; end Behavioral;
2、八位二进制数转化成8421BCD码模块
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity bcd is
Port (s : in STD_LOGIC_VECTOR (7 downto 0); a : out STD_LOGIC_VECTOR (3 downto 0); b : out STD_LOGIC_VECTOR (3 downto 0)); end bcd;
architecture Behavioral of bcd is
signal q0: STD_LOGIC_VECTOR (7 downto 0); signal q1: STD_LOGIC_VECTOR (3 downto 0); signal q2: STD_LOGIC_VECTOR (3 downto 0); begin process(s) begin q0<=s;
case q0 is when\
q1<=\when\
q1<=\when\
----把八位二进制数转化为8421BCD码
相关推荐: