用VHDL设计十翻二运算电路..doc
文本预览下载声明
设计一个十翻二运算电路
内容摘要:
十翻二电路可以用简单的一些芯片组合而成,也可以用可编程逻辑器件来实现,本次实践用quartusⅡ 5.0来编程,FPGA采用EPF10K10LC84-4,通过本次实践学会基本的实验技能,提高运用理论知识解决实际问题的能力。关键词:128=1*100+2*10+8
所以要包括乘100,乘10和相加的模块,由于还要显示输入三位十进制数,因此还要有一个数码管显示模块,电路方框图如下:
百位
二进制
十位
个位
四、各个模块的VHDL描写
1)、乘10模块的VHDL
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cheng10 is
port (ten:in std_logic_vector(3 downto 0);
tenout:out std_logic_vector(9 downto 0));
end;
architecture one of cheng10 is
signal a:std_logic_vector(9 downto 0);
signal b:std_logic_vector(9 downto 0);
begin
process(ten)
begin
a(6 downto 3)=ten;
b(4 downto 1)=ten;
tenout=a+b;
end process;
end;
2)、乘100模块的VHDL
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cheng100 is
port (hum:in std_logic_vector(3 downto 0);
humout:out std_logic_vector(9 downto 0));
end;
architecture one of cheng100 is
signal a:std_logic_vector(9 downto 0);
signal b:std_logic_vector(9 downto 0);
signal c:std_logic_vector(9 downto 0);
signal d:std_logic_vector(9 downto 0);
signal e:std_logic_vector(9 downto 0);
signal f:std_logic_vector(9 downto 0);
begin
process(hum)
begin
a(6 downto 3)=hum;
b(4 downto 1)=hum;
c=a+b;
d(9 downto 3)=c(6 downto 0);
e(7 downto 1)=c(6 downto 0);
f=d+e;
humout=f;
end process;
end;
3)、相加模块的VHDL
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity xiangjia is
port (ena:in std_logic;
humout:in std_logic_vector(9 downto 0);
tenout:in std_logic_vector(9 downto 0);
oneout:in std_logic_vector(3 downto 0);
shuchu:out std_logic_vector(9 downto 0));
end;
architecture one of xiangjia is
begin
process(humout,tenout,oneout)
begin
if ena=0 then shuchu=0000000000;
else
shuchu=humout+tenout+oneout;
end if;
end process;
end;
4)、数码管显示模块的VHDL
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
显示全部