1、 什么是EDA技术?有什么特点?
答:电子设计自动化,特点有用软件方式设计硬件、用软件方式设计的系统到硬件系统的转换是由相关的开发软件自动完成的、设计过程中可由相关软件进行各种仿真、系统可现场编程,在线升级、整个系统集成在一个芯片上,体积小,功耗低,可靠性高。
2、 EDA的工程设计流程?
答:源程序的编辑和编译→逻辑综合→目标器件的布线/适配→目标器件的编程/下载→硬件仿真/硬件测试。
3、 大规模可编程逻辑器件(CPLD及FPGA)的基本结构及工作原理。
答FPGA:现场可编程门阵列,在结构上主要分为三个部分,即可编程逻辑单元,可编程输入/输出单元和可编程连线三个部分。
CPLD:复杂可编程逻辑器件,在结构上主要包括三个部分,即可编程逻辑宏单元,可编程输入/输出单元和可编程内部连线。
CPLD采用可编程的与阵列和固定的或阵列结构,断电后信息不丢失,而FPGA采用是查找表法,断电后信息会丢失。
4、 什么是VHDL语言?VHDL语言的设计采用什么方法(自顶向下)?传统数字系统设计采用什么方法(自底向上)?(从上到下和从下到上)
答:硬件描述语言、库文件、实体entity、结构architecture三部分,在实体部分定义一个模块的输入输出端口,在结构部分定义该实体输入和输出端口之间的逻辑关系、
5、 Vhdl标符:
以英文字母开头,不连续使用下划“-“,不以下划线结尾的,由英文字母、数字以及下划线组成的字符串。其中“-- -- ”表示后面的内容是注释;
6、VHDL语言程序的基本结构:
实体(ENTITY)、结构体(ARCHITECTURE)、配置、包集合和库五个部分组成。
实体:用于描述所设计的系统的外部接口信号;(端口的定义)
结构体:用于描述系统内部的结构和行为;定义了设计单元具体功能。
结构体对其基本设计单元的输入输出关系可以用三种方式进行描述:行为描述、寄存器传输描述和结构描述。
7、 VHDL对象:常量、变量、信号,它们如何定义(格式)?各自有何不同?
常量的定义:CONSTANT VCC: REAL:=5.0;
变量的定义:VARIABLE TEMP:STD_LOGIC;
信号的定义:SIGNAL TEMP:INTEGER;
8、 VHDL常用的数据类型有哪些?
(1)标准数据类型 整数类型(INTEGER)、实数类型(REAL)、位(BIT)、矢量类型(BIT_VECTOR)(有2种值)、布尔类型(BOOLEAN)、自然数(NATURAL)和正整数类型(POSITIVE)、字符串类型(STRING)、时间(TIME)等。
(2)IEEE库(最常用的库)预定义标准逻辑位和矢量(在IEEE库的程序包STD_LOGIC_1164中) 标准逻辑位(STD_LOGIC)、标准逻辑矢量( STD_LOGIC_VECTOR)、其它预定义标准数据类型有无符号数据(UNSIGNED)、有符号数(SIGNED)等;
9、 VHDL的操作符:
逻辑操作符:AND、OR、NAND、NOR、XOR、NOT、XNOR等;
关系运算符:=、/=、>、<、>=、<=; 算术运算符:+、-、*、/等;
并置运算符:&;
移位运算符:SLL、SRL;SLA、SRA、ROL、ROR;
10、 VHDL语言的描述语句
(1) 顺序语句(格式)(只能在进程PROCESS、子程序(函数和过程)中使用)
WAIT语句
变量赋值语句: :=;(立即发生的)
信号代入语句: <=;(存在一定的延时)
IF语句 (条件之间是相与)
CASE语句;(要把所有条件都列出,一般最后加一语句WHEN OTHERS=>NULL;)
LOOP语句;
NEXT语句和EXIT语句;
RETURN语句;
NULL语句;
过程及函数调用语句;
REPORT语句;
ASSERT断言语句;(用来说明错误的等级NOTE、WARING、ERROR、FAILURE)
(2) 并行语句(执行时与语句的顺序无关)
进程语句(PROCESS);
并行信号代入语句;
并行过程调用语句;
块语句;
元件例化语句;
生成语句;
11、 组合逻辑电路设计 编码器(8-3)、译码器(3-8)、七段显示译码器、多路选择器、加法器、奇偶校验器;
12、 时序逻辑电路设计
(1) 时钟信号的表示(上升沿与下降沿的表示方法、复位信号描述)
上升沿时钟的检测:CLK’EVENT AND CLK=’1’; 或
RISING_EDGE(CLK);
下降沿时钟的检测:CLK’EVENT AND CLK=’0’; 或FALLING_EDGE(CLK);
(2)触发器(D,JK)、移位寄存器、分频器、计数器(同步)
(3)(各种进制)(10, 16,24,60);
(4)综合运用
13 QURTUSII软件使用
(1)设计输入有三种方式:图形、文本、波形输入等;
(2)常用文件格式:GDF(原理图文件)、VHD、SCF(波形文件)
(3)用QURTUSII设计数字系统过程;
作业:
*(1) 设计一个四输入与门;
Library ieee;
use ieee.std_logic_1164.all;
entity and 4 is
port(a,b,c,d:in std_logic;
y:out std_logic);
end entity and 4;
architecture art of and 4 is
begin
y<=a and b and c and d;
end art;
*(2)设计一位全加器
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity jiafaqi is
port(a1,b1:in std_logic;
ci-1:in std_logic;
s1:out std_logic;
ci:out std_logic);
end entity jiafaqi;
architecture art of jiafaqi is
signal s2:std_logic_vector(1downto0);
signal a2,b2:std_logic_vector(1downto 0);
begin
a2<=”0”& a1;
b2<=”0”& b1;
s2<=a2+b2+ci-1;
s1<=s2(0);
ci<=s2(1);
end art;
(3) 设计一个四位奇偶校验器;
library ieee;
use ieee.std_logic_1164.all;
entity jiaoyan 4 is
port(a:in std_logic_vector(3downto0);
y:out std_logic); end entity jiaoyan 4;
architecture art of jiaoyan 4 is
signal tmp:std_logic
begin
tmp<=’0’;
for n in 0 to 3 loop
tmp<=tmp x or a (n);
end loop;
y<=tmp;
end art;
(4) 设计一个具有异步置0的四位移位寄存器;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity jicunqi 4 is
port(a:in std_logic;
clk:in std_logic;
y:out std_logic_vector(3downto0));
end entity jicunqi 4;
architecture art of jicunqi 4 is
signal q:std_logic_vector_(3downto0);
process(clk) is
begin
if clk`event and clk=`1`then
q(0)<=a;
for i in 1 to 3 loop
q(i)<=q(i-1);
end loop;
end if;
end process;
y<=q;
end art;
*(5)设计一个七段显示译码器;
library ieee;
use ieee.std_logic_1164.all;
entity ymq is
port (d:in integer range 0 to 9;
s:out std_logic_vector(0downto6));
end entity ymq;
architecture art of ymq is
begin
process(d) is
begin
case d is
when 0=>s<=”1111110”;
when 1=>s<=”0110000”;
when 2=>s<=”1101101”;
when 3=>s<=”1111001”;
when 4=>s<=”0110011”;
when 5=>s<=”1011011”;
when 6=>s<=”1011111”;
when 7=>s<=”1110000”;
when 8=>s<=”11111111”;
when 9=>s<=”1111011”;
when others =>s<=”0000000”;
end case;
end process;
end art;
*(6) 设计一个四选一数据选择器
Library ieee;
Use ieee.std_logic_1164.all;
Entity xuanzeqi is
Port(s1,s2:in std_logic;
A,B,C,D:in std_logic;
Z:out std_logic);
End entity xuanzeqi;
Architecture art of xuanzeqi is
Signal s:std_logic_vector(1downto0);
Begin
S=s1&s0;
Process(s,a,b,c,d) is
Begin
Case s is
When”00”=>z<=A;
When”01”=>z<=B;
When”10”=>z<=C;
When”11”=>z<=D;
When others=>z<=”x”;
End case;
End process;
End art;
*(7)设计一个具有清零功能的60进制计数器;
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Entity cnt 60 is
Port(clk,reset:in std_logic;
Enhour:out std_logic;
Daout:out std_logic_vector(6downto0);
End entity cnt 60;
Architecture fun of cnt 60 is
Signal count:std_logic_vector(6downto0);
Begin
Daout<=count;
Process(clk,reset,sethour)
Begin
If(reset=`0`)then Count<=”0000000”;
Elsif(clk`event and clk=`1`)then
If(count(13downto0)=”1001”)then
If (count<16#60#)then
If (count=”1011001”)then
Enhour<=”1”;count<=”0000000”;
Else
Count<=count+7;
End if;
Else
Count<=”0000000”;
End if;
Elsif(count<16#60#)then
Count<=count+1;
Enhour<=`0`after100ns;
Else
Count<=”0000000”;
End if;
End if:
End process;
End fun;
试用VHDL编写程序实现二十四进计数器;(LIBRARY ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
ENTITY CNT24 IS
16%)
PORT(clk,reset : IN STD_LOGIC;
enhour : OUT STD_LOGIC;
daout: out std_logic_vector (6 downto 0));
END entity CNT24;
ARCHITECTURE fun OF CNT24 IS
SIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);
BEGIN
daout <= count;
process ( clk,reset,sethour)
begin
if (reset='0') then
count <= \"0000000\";
elsif (clk' event and clk='1') then
if (count(3 downto 0)=\"1001\") then
if (count <16#24#) then
if (count=\"0100100\") then
enhour<='1'; count<=\"0000000\";
ELSE
count<=count+7;
end if;
else
count<=\"0000000\";
end if;
elsif(count <16#24#) then
count <= count + 1;
enhour<='0' after 100 ns;
else
count<=\"0000000\";
end if;
end if;
end process; END fun;
因篇幅问题不能全部显示,请点此查看更多更全内容