图4-8导入所有引脚
图 4-9 给定波形激励信号
图 4-10 波形仿真结果
§4.2 QuartusII的设计特点
(1) 最易使用的CPLD设计软件
20
QuartusII提供了易用和全面的设计环境,能够从开始到结束完成整个CPLD设计项目。
(2) QuartusII给MAX+plusII用户带来的优势
QuartusII软件是性能最高,最易于使用的CPLD设计软件。它提供了一个内置的MAX+plusII外观选项,用户无需学习一个新的用户界面,能够获得所有QuartusII软件的性能和高级功能所带来的优势。(3) 系统设计技术
Altera的QuartusII软件是第一个支持基于知识产权(IP)系统的设计软件,他包括完整、自动的定义和实施,不需要底层的硬件描述语言(HDL)或原理图。设计人员可以利用这种特性在几分钟内将他们的构想变成正常运行的系统。
21
第五章 本设计中所用到的各基本原件的程序及仿真
波形
§5.1 八位计数器
jishu8clkaaaa[7..0]inst
图5-1 八位计数器生成电路符号
Clk为输入信号,可以输入一时钟信号,aaaa[7..0]为输出信号,给定输入信号后可以输出一个八位信号。
⑴程序: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity jishu8 is port(clk:in std_logic;
aaaa:out std_logic_vector(7 downto 0));
end jishu8;
architecture behav of jishu8 is
signal cqi:std_logic_vector(7 downto 0); begin process(clk) begin
if clk'event and clk='1' then cqi<=cqi+1; end if;
22
end process;
aaaa<=cqi(7 downto 0); end behav;
⑵仿真波形及产生:
图5-2 八位计数器波形仿真结果
§5.2 A_D转换器
此A-D转换器采用ADC0809其中D 为输入信号,clk为状态机工作时钟,eoc为转换状态指示,ale为八路模拟信号通道地址锁存信号,start为开始转换信号,oe为数据输出三态控制信号,lock0为观察数据锁存时钟,adda为信号通道最低位控制信号,Q为八位数据输出信号。
ADCD[7..0]CLKEOCALESTARTOELOCK0ADDAQ[7..0]inst2 图5-3 A-D转换器电路符号
23
⑴程序: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADC IS
PORT ( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK,EOC: IN STD_LOGIC;
ALE,START,OE,LOCK0,ADDA: OUT STD_LOGIC; Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ADC;
ARCHITECTURE BEHAV OF ADC IS TYPE STATES IS (ST0,ST1,ST2,ST3,ST4);
SIGNAL CURRENT_STATE,NEXT_STATE:STATES:=ST0; SIGNAL REGL:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK:STD_LOGIC; BEGIN ADDA<='1';
Q<=REGL; LOCK0<=LOCK;
COM: PROCESS(CURRENT_STATE,EOC) BEGIN
CASE CURRENT_STATE IS
WHENst0=>ale<='0';start<='0';lock<='0';oe<='0';next_state<=st1;
WHEN st1=> ale<='1';start<='1';lock<='0';oe<='0';next_state<=st2; WHEN st2=> ale<='0';start<='0';lock<='0';oe<='0'; if (eoc='1')then next_state<=st3; else next_state<=st2; end if;
WHEN st3=> ale<='0';start<='0';lock<='0';oe<='1';next_state<=st4; WHEN st4=> ale<='0';start<='0';lock<='1';oe<='1';next_state<=st0;
WHEN others=> next_state<=st0; end case;
end process com; reg: process(clk)
24