EDA技术与应用的二选一选择器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA 技术与应用的二选一选择器
学院名称: 东方学院
专 业: 电子信息工程
班 级:
学 号:
姓 名:
指导教师姓名:
指导教师职称:
2007年 4 月24日
JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 本科课程设计(论文)
二选一选择器
一.设计目的
1.学习VHDL编程;
2.进一步熟悉实验箱电路;
二.设计指标及功能要求
设计指标:
(1)对所设计的小系统功能正确分析;
(2)基于VHDL语言描述系统的功能;
(3)在QUARTUSⅡ环境中编译通过;
(4)仿真通过,并得到正确的波形;
(5)给出相应设计报告;
功能要求:1.用VHDL语言设计可控加减计数器;
2.至少两层电路,底层有三种元件;
3.使得其执行可控加,减记数;
三.实验步骤
1.建立Light目录,用于存放本实验所建立的文本
2.点击“File New”,在出现的对话框中,选择“VHDL File”进入文本编辑器。
3.输入VHDL语言源文件。
4.点“Save as”,保存该源文件。
5.进行编译,点“start compilation”,若语句有错会有提示,修改后重新编译直到无错误。
6.点“File New”,选择“Vector Waveform File”,建立仿真输入文件.
7.点“End time”,输入终止时间(表示波形长度).点“light”将所有信号选中或部分选中。点“start simulation”.运行波形,直至正确。
四、电路工作原理
首先,用异或门控制输入端,加一个脉冲信号。在其后方分别加上加法计数器和减法计数器:来一个脉冲,当异或门输出为0时,减法计数器开始工作,当输出为1时,加法计数器工作。这样,利用给异或门加不同的信号来控制加减计数器。
五.各子模块设计与调试过程
library ieee;
use ieee.std_logic_1164.all;
entity ora is
port(a:in std_logic;
b:out std_logic);
end entity;
architecture one of ora is
begin
b<=not a;
end architecture;
library ieee;
use ieee.std_logic_1164.all;
entity noxa is
port(a,b:in std_logic;
c:out std_logic);
end entity;
architecture one1 of noxa is
begin
c <= a xor b;
end architecture;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt10a is
port(CP,EN:in std_logic;
q:out std_logic_vector(3 downto 0)); end cnt10a;
architecture one of cnt10a is
begin
process(CP,EN)
variable q1:std_logic_vector(3 downto 0);
begin
if(CP'event and CP='1') then
if EN='1' then
if(q1<9) then q1:=q1+1;
else q1:=(others=>'0');
end if;
end if;
end if;
q<=q1;
end process;
end one;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity cnt10b is
port(CP,EN:in std_logic;
q: out std_logic_vector(3 downto 0)); end cnt10b;
architecture one of cnt10b is
begin
process(CP,EN)
variable q1:std_logic_vector(3 downto 0);
begin
if(CP'event and CP='1') then
if EN='1' then
if(q1=0) then q1:="1001";
else q1:=q1-1;
end if;
end if;
end if;
q<=q1;
end process;
end;
library ieee;
use ieee.std_logic_1164.all;
entity kekong is
port(a1,b1,cp1:in std_logic;
cq1,cq2:out std_logic_vector(3 downto 0)); end entity;
architecture wowo of kekong is
component noxa is