每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。那么我们该如何写一篇较为完美的范文呢?下面我给大家整理了一些优秀范文,希望能够帮助到大家,我们一起来看一看吧。
EDA基础知识篇一
全称:专用集成电路; :现场可编程门阵列 :复杂可编程逻辑器件; 全称:硬件描述语言; 5.全定制; 6.半定制;
核;ip就是知识产权核或知识产权模块的意思
8.综合(器);综合就是将电路的高级语言(如行为描述)转换为低级的,可与fpga/cpld的基本结构相映射的网表文件或程序。
9.适配(器);适配器也称结构综合器,它的功能是将综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。
10.功能仿真;是直接对vhdl、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求
11.时序仿真;就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而,仿真精度高。
12.编程下载;把适配后生成的下载或配置文件,通过编程器或编程电缆向fpga或cpld下载,以便进行硬件测试和验证 ;可编程只读存储器 ;可编程逻辑阵列 ;可编程阵列逻辑 16.查找表; 17.乘积项;
18.实体;vhdl实体作为一个设计实体(独立的电路功能结构)的组成部分,其功能是对这个设计实体与外部电路进行接口描述。
19.结构体;结构体是实体所定义实体中的一个组成部分。结构体描述设计实体的内部结构和外部设计实体端口间的逻辑关系。
20.元件例化;元件例化意味着在当前结构体内定义了一个新的设计层次,这个设计层次的总称叫元件,但它可以以不同的形式出现。?? 21.时钟进程; 22.三态; 23.线与; 24.数据对象;
25.变量;变量是一个局部量,只能在进程和子程序中使用,变量的赋值是立即发生的,不存在任何延时行为。
26.信号;信号是硬件系统的基本数据对象,它的性质类似于连接线。信号可以作为设计实体中并行语句模块间的信息交流通道
型状态机;异步输出状态机,输出仅为当前状态的函数,在输入发生变化时还必须等待时钟的到来。
型状态机;同步输出状态机,输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的。不依赖于时钟的同步。
注意:
1.<= 对信号signal的赋值 := 是对变量variable的赋值
2.程序的实体名必须和文件名一致,例1中二输入与门的文件名必须为yumen
asic全称;fpga和cpld全称;vhdl全称;全定制;半定制; ip核;综合(器);适配(器);功能仿真;时序仿真;编程下载;prom;pla;pal;查找表;乘积项;实体;结构体;元件例化;时钟进程;三态;线与; 数据对象;变量;信号; moore型状态机;mealy型状态机。
二、程序分析及设计
1、二输入与门的vhdl语言设计。library ieee;use ;entity yumen is
port(a, b : in bit;
y : out bit);end entity yumen;architecture one of yumen is begin y <= a and b;end architecture one;
2、带有异步复位和同步时钟使能的6进制计数器vhdl语言设计。
library ieee;use ;use ;entity jinzhi is port(clk,rst,en : in std_logic;cq : out std_logic_vector(2 downto 0);cout : out std_logic);end jinzhi;architecture behav of jinzhi is begin process(clk, rst, en)variable cqi : std_logic_vector(2 downto 0);begin if rst = '1' then cqi :=(others =>'0');--计数器复位 elsif clk'event and clk='1' then--检测时钟上升沿 if en = '1' then--检测是否允许计数 if cqi < 5 then cqi := cqi + 1;--允许计数
else cqi :=(others =>'0');--大于5,计数值清零 end if;end if;end if;if cqi = 5 then cout <= '1';--计数大于5,输出进位信号 else cout <= '0';end if;cq <= cqi;--将计数值向端口输出 end process;end behav;
3、用vhdl语言设计2选1数据选择器。
library ieee;use ;entity erxuanyi is port(a, b, s: in bit;y : out bit);end erxuanyi;architecture one of erxuanyi is begin process(a,b,s)begin if s = '0' then y <= a;else y <= b;end if;end process;end;
4、边沿型t、d触发器vhdl语言设计。--d触发器
library ieee;use ;entity dff is port(clk : in std_logic;d : in std_logic;q : out std_logic);end;architecture bhv of dff is signal q1 : std_logic;begin process(clk)begin if clk'event and clk = '1' then q1 <= d;end if;end process;q <= q1;end bhv;
--t触发器
有clk且为1的时候,t与当前状态异或
library ieee;use ;entity tff is port(clk : in std_logic;t : in std_logic;q : out std_logic);end;architecture bhv of tff is signal q1 : std_logic;begin process(clk)begin if clk'event and clk = '1' then q1 <= q1 xor t;end if;end process;q <= q1;end bhv;
5、带并行置数的8位右移移位寄存器vhdl语言设计。
library ieee;use ;entity shfrt is port(clk,load: in std_logic;
din: in std_logic_vector(7 downto 0);
qb:out std_logic);end shfrt;
architecture behav of shfrt is begin process(clk,load)
variable reg8: std_logic_vector(7 to 0);begin
if clk'event and clk='1' then
if load='1' then reg8:=din;
else reg8(6 downto 0):=reg8(7 downto 1);
end if;
end if;
qb<=reg8(0);end process;end behav;--说明:当clk有上升沿,而且load为1的时候把din的值赋给reg8,如果clk有上升沿,而且load为0的时候把reg8的高7为赋给低7位(注意此时最高位不变)6、1位半加器vhdl语言设计。(布尔逻辑描述)library ieee;use ;entity banjia is port(a,b : in std_logic;co,so : out std_logic);end entity banjia;architecture fh1 of banjia is begin so <= not(a xor(not b));co <= a and b;end architecture fh1;
7、用vhdl语言设计实现四选一数据选择器。
library ieee;use ;entity sixuan is port(a, b, c , d: in bit;
s: in std_logic_vector(1 downto 0);y : out bit);end sixuan;architecture one of sixuan is begin process(a,b,c,d,s)begin case s(1 downto 0)is when “00” => y <= a;when “01” => y <= b;when “10” => y <= c;when “11” => y <= d;when others => null;end case;end process;end;
8、用vhdl语言实现三态门设计。
library ieee;use ;entity santai is port(enable : in std_logic;datain : in std_logic_vector(7 downto 0);dataout : out std_logic_vector(7 downto 0));end santai;architecture bhv of santai is begin process(enable,datain)begin if enable = '1' then dataout <= datain;else dataout <=“zzzzzzzz”;end if;end process;end bhv;
9、设有vhdl描述的半加器h_adder和或门or2,试通过层次化设计思想设计由半加器和或门构成的一位二进制全加器的vhdl程序。全加器f_adder电路结构组成图如下所示。
半加器h_adder library ieee;use ;entity h_adder is port(a,b : in std_logic;co,so : out std_logic);end entity h_adder;architecture fh1 of h_adder is begin so <=(a or b)and(a nand b);co <= not(a nand b);end architecture fh1;
或门 or2a library ieee;use ;entity or2a is port(a, b :in std_logic;c : out std_logic);end entity or2a;architecture one of or2a is begin c <= a or b;end architecture one;
元件例化adder library ieee;use ;entity adder is port(ain,bin,cin:in std_logic;
cout,sum :out std_logic);end entity adder;architecture fd1 of adder is component h_adder
port(a,b:in std_logic;
co,so:out std_logic);end component;component or2a
port(a,b:in std_logic;
c:out std_logic);end component;signal d,e,f:std_logic;begin u1 : h_adder port map(a=>ain,b=>bin,co=>d,so=>e);u2 : h_adder port map(a=>e,b=>cin,co=>f,so=>sum);u3 : or2a port map(a=>d,b=>f,c=>cout);end architecture fd1;
EDA基础知识篇二
名词解释:
eda:electronic design auto mation 电子设计自动化 pld:programmable logic device 可编程逻辑器件 ldpld:低密度可编程逻辑器件 hdpld:高密度可编程逻辑器件
prom:programmable read only memory 可编程只读存储器 pla:programmable logic array 可编程逻辑阵列 pal:programmable array logic 可编程阵列逻辑 gal:generic attay logic 通用阵列逻辑
epld:erasable programmable logic device 可擦除可编程逻辑器件 cpld:complex programmable logic device 复杂可编程逻辑器件 fpga:现场可编程门阵列
otp:one time programmable 一次性编程器件 mtp:many time programmable 多次编程器件 isp:在系统可编程 简答:
1、eda设计流程:设计准备;设计输入←→功能仿真(图形输入方式,文本输入方式,波形输入方式);设计处理←→时序仿真(设计编译和检查,设计优化和综合,适配和分割,布局和布线,生成编程数据文件);设计效验;器件编程;器件测试和设计验证;设计完成。
2、硬件描述语言:vhdl:
1、具有强大的功能,覆盖面广,描述功能强
2、有良好的可读性
3、有良好的可移植性
4、可以延长设计的生命周期
5、支持对大规模设计的分解和已有设计的再利用
6、有利于保护知识产权
verivog hdl:适合算法级,寄存器传输级,逻辑级,门级和版图级等各个层次和电路设计和描述。最大的优点是设计与工艺无关性。
vhdl设计实体的基本机构图。
1、库,程序包:libtaty ieee;
use ;
2、实体entity 实名体
is
generic(类属表);--类属参数声明。
port(端口表);--端口声明
end实名体
端口方向:in-输入
out-输出
inout-双向
buffer-具有读功能的输出
3、结构体:architecture结构体名of实体名is [信号声明语句]:--为内部信号名称及类型声明 begin [功能描述语句] end architectvre 结构实体名;
4、vhdl文字规则:
1、数制#数值#
例:10#170#--十进制数值文字
2、数制基数符号“数值字符串” 例:b“111011110”;--二进制数数组
3、标识符:以字母开头,后面跟若干字母,数字或单个下划线,但最后不能为下划线。
5、vhdl对据对象:
1、变量:是一个局部量,只能在进程函数和进程中声明和使用。
variable变量名:数据类型【:=初始值】; 2.信号描述硬件系统的基本数据对象。
signal信号名:数据类型【:=初值】
标准逻辑位:
1、未初始化的u;
2、强未知的x;
3、强0的0;
4、强1的1;
5、高阻态z
6、弱未知的w;
7、弱0的l;
8、弱1的h;
9、忽略-verilog hdl具有行为描述和结构描述功能。
行为描述包括:系统级、算法级、寄存器传输级。jk触发器
library ieee;use ;entity myjkff is port(j,k,clr:in std_logic;clk:in std_logic;q,qn:buffer std_logic);end myjkff;architecture one of myjkff is begin process(j,k,clr,clk)variable jk:std_logic_vector(1 dowmto 0)begin jk:=(j & k);if clr=’0’then q<=’0’;qn<=’1’;
elseif clk’event and clk=’0’then case jk is when “00”=>q<=q;qn<=qn;when “01”=>q<=’0’;qn<=’1’;when “10”=>q<=’1’;qn<=’0’;when “11”=>q<=not q;qn<=not qn;when others=>null;end case;end if;end process;end one;
8选一数据选择器
library ieee;use ;entity vhdl1 is port(s1,s2,s3: in std_logic;a,b,c,d,e,f,j,h: in std_logic;z: out std_logic);end vhdl1;architecture example7 of vhdl1 is signal s: std_logic_vector(2 downto 0);begin s<=s1&s2&s3process(s1,s2,s3,a,b,c,d,e,f,j,h)begin case s is when “000”=>z<=a;when “001”=>z<=b;when “010”=>z<=c;when “011”=>z<=d;when “100”=>z<=e;when “101”=>z<=f;when “110”=>z<=j;when “111”=>z<=h;when others=>z<='x';end case;end process;end example7;
十五进止加法计数器
library ieee;use ;
use ;
entity vhdl1 is port(clk,rst,ena:in std_logic;
q:buffer std_logic_vector(3 downto 0);
cout:out std_logic);end vhdl1;
architecture one of vhdl1 is begin process(clk,rst,ena)begin if rst='1' then q<=“0000”;elsif clk'event and clk='1' then if ena='1' then q<=q+1;if q=“1110” then q<=“0000”;end if;end if;cout<=q(0)and q(1)and q(2)and q(3);end if;end process;end one;
EDA基础知识篇三
vhdl有如下特点:①支持从系统级到逻辑门级电路的描述;②具有很强的硬件描述能力;③设计技术齐全、方法灵活、支持广泛;④对设计描述具有相对的独立性;⑤具有很强的移植能力;⑥易于共享和复用;⑦具有丰富的仿真语句和库函数;⑧设计结构清晰、易读易懂;⑨易实现系统的更新和升级;⑩数据类型丰富、安全性好。
vhdl语言中常用的五种库:1)ieee库:vhdl语言设计中最常见的库。2)std库:vhdl语言的标准库3)work库:用户的vhdl语言工作库。4)vital库: vhdl语言的时序仿真库5)用户自定义的库:用户自定义的资源库
变量的使用规则:① 变量不能用于硬件连线和存储元件;② 变量赋值和初始化赋值都用“:=”表示;③ 变量的初值不是预设的,某一时刻只能有一个值;④ 变量不能用于在进程间传递数据;⑤ 仿真时,变量用于建模;⑥ 综合时,变量充当数据的暂存。
信号与变量的区别:①使用场合不同:变量在进程、函数和过程中说明;信号在结构体中说明。②赋值符号不同:变量用“:=”号赋值, 其值被立即使用(无时间延时);信号用“<=”赋值,其值可以附加延时。
vhdl语言预定义了五种运算符:逻辑运算符、算术运算符、关系运算符、符号运算符、移位运算符
主要的三家公司:xilinx、altera、lattice eda软件系统包括子模块:设计输入子模块、设计数据库子模块、分析验证子模块、综合仿真子模块、布局布线子模块。
电子系统设计的仿真过程分为两个阶段:设计前期的系统级仿真和设计过程的电路级仿真。(系统仿真主要验证系统的功能;电路级仿真主要验证系统的性能,决定怎样实现设计所需的精度。)
设计过程中的仿真有三种:行为仿真、功能仿真、时序仿真 数字系统的两个模块(子系统):数据处理子系统、控制子系统
数据处理子系统主要完成数据的采集、存储、运算、传输,主要由存储器、运算器、数据选择器等功能电路组成。数字系统设计方法:模块设计方法、自顶向下设计法、自底向上设计法。一般采用自顶向下、由粗到细、逐步求精的方法。
数字系统的设计准则:1)分割准则2)系统的可观测性3)同步和异步电路4)最优化设计5)系统设计的艺术
数字系统的设计步骤:1)系统任务分析2)确定逻辑算法3)建立系统及子系统模型4)系统(或模块)逻辑描述5)逻辑电路级设计及系统仿真6)系统的物理实现 vhdl语言要素:数据对象、数据类型、各类操作数及运算操作符 标识符规则:以英文字母开头,不连续使用下划线“_”,不以下划线结尾的,由26个大小写英文字母、数字0~9及下划线“_”组成的字符串,英文字母不区分大小写,vhdl的保留字不能用于作为标识符使用。
在进程中,只能将信号列到敏感表,而不能将变量列入敏感表。可见进程对信号敏感。vhdl中的数据类型:标量型(包括:实数型、整数型、枚举型、时间类型)、复合类型(数组型、记录型)、存取型、文件类型
vhdl四大类数据类型又可分为两类:预定义数据类型、用户自定义数据类型(基于预定义数据类型)预定义数据类型:1)布尔型2)位数据类型(bit)3)位矢量(bit_vector)4)字符型5)整数型6)自然数和正整数型7)实数型8)字符串型9)时间型10)错误等级 数据类型:标准逻辑位std_logic、标准逻辑矢量std_logic_vector vhdl中六类基本顺序语句:赋值语句、转向控制语句、等待语句、子程序调用语句、返回语句、空操作语句。
在信号赋值时,当统一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值,其前面相同的赋值目标则不作任何变化。
转向控制语句五种:if语句、case语句、loop语句、next语句、exit语句
当执行wait等待语句,程序将被挂起,知道满足结束条件后,程序重新开始执行。已列出敏感量的进程不能使用任何形式的wait语句 过程调用:执行一个给定名字和参数的过程
过程名[([形参名=>] 实参表达式 {,[形参名=>]实参表达式})];过程调用步骤:1)将in和inout的形参值赋给调用过程中与之对应的形参;2)执行这个过程;3)将过程中in和inout的形参值赋给对应的实参
函数调用:返还一个指定数据类型的值,函数的参量只能是输入值 任何时刻,一个对象(信号、常量、变量)只有一个值,但可有多个属性 预定义属性描述:属性测试项目名’属性标识符 clock’event and clock=’1’对上升沿的测试(或者not(clock’stable and clock=’1’))clock’event and clock=’0’对下降沿的测试(或者clock’stable and clock=’0’)并行语句在结构体中的执行是同步的。每一并行语句内部的语句运行方式:并行执行、顺序执行。结构体中并行语句有七种:1)并行信号赋值语句2)进程语句3)块语句4)条件信号赋值语句5)元件例化语句6)生成语句7)并行过程调用语句
process中规定了每个进程语句在它的摸个敏感信号的值改变时都必须立即完成某个功能行为。进程的激活必须由敏感信号表中定义的敏感信号的变化来启动,否则必须有一个显示的wait语句激活
并行信号赋值语句包括:简单信号赋值语句、条件信号赋值语句、选择信号赋值语句 简单信号赋值语句:信号赋值语句<=表达式;
条件信号赋值语句:赋值目标<=表达式 when 赋值条件 else(类似于if语句)表达式 when 赋值条件 else „„ 表达式;
选择信号赋值语句:with 选择表达式 select(类似于case语句)赋值目标<=表达式 when 选择值,表达式 when 选择值,„„
表达式 when 选择值;
元件例化是使vhdl设计实体构成自上而下层次化设计的一个重要途径。组成部分:1)将一个现成的设计实体定义为一个元件的语句;2)此元件与当前设计实体中的连接说明
元件例化语句中定义的例化元件的端口名与当前系统的连接实体端口名的接口表达式表达有两种方式:1)名字关联方式:通过“=>”一一对应2)位置关联方式:按例化元件端口的定义顺序将例化元件的对应的连接实体端口名一一列出
生成语句有一种复制功能。生成语句的四个组成部分:生成方式、说明部分、并行语句、标号。
子程序是利用顺序语句来定义和完成算法的。只能通过子程序调用及与子程序的界面端口进行通信。包括过程(可单独存在,多个返回值,有输入/出双向参数)和函数(作为语句的一部分调用,一个返回值,所有参数都是输入参数),可在vhdl的结构体或程序包中任何位置调用子程序。
子程序特性:可重载性,即允许有许多重名的子程序,但这些子程序的参数类型及返回值数据类型不同
函数组成:函数首(作用:作为程序包的有关此函数的一个接口界面)、函数体
重载函数:vhdl允许相同的函数名定义函数,但要求函数中定义的操作数具有不同的数据类型。
过程组成部分:过程首、过程体。过程首不是必须的,过程体可以独立存在和使用
过程首参数表用于对常数、变量、信号三类数据对象目标作出说明,并用in、out、inout定义参数工作模式(信息流向)
一般把eda技术的发展分为cad、cae、eda三个阶段。
eda设计流程包括设计准备、设计输入、设计处理、的设计验证包括功能仿真、时序仿真、器件测试三个过程
eda的设计输入包括文本输入方式、图形输入方式、波形输入方式三个过程
当前最流行的并成为ieee标准的硬件描述语言包括vhdl 语言、verilog 和 hdl 语言
将硬件描述语言转化为硬件电路的重要工具软件称为hdl 综合器
基于eprom、e2prom和快闪存储器件的可编程器件,在系统断电后编程信息不丢失 基于sram结构的可编程器件,在系统断电后编程信息 会丢失
cpld器件中至少包括可编程逻辑宏单元、可编程 i/o 单元、可编程内部连线三种结构 fpga的三种可编程电路分别是可编程逻辑块 clb、输入/输出模块 iob、互连资源三种结构 根据逻辑功能块的大小不同,可将fpga(可编程逻辑器件)分为细密度、粗密度两类;据fpga内部连线结构的不同,可将fpga分为分段互连型、连续互连型两类;据fpga采用的开关元件不同,可将fpga分一次编程型(otp)、可重复编程型(mtp)两类
目前常见的可编程逻辑器件的编程和配置工艺包括电可擦存储单元的 e2prom 或 flash 技术、sram 查找表的编程单元、反熔丝编程单元三种编程工艺。
vhdl设计实体的基本结构由库、程序包使用说明、设计实体的说明、结构体说明、配置 等部分组成
实体、结构体是设计实体的基本组成部分,他们可以构成最基本的vhdl程序 在vhdl的端口声明语句中,端口方向包括in out buffer inout vhdl的数据对象包括常数 constant、变量 variable、信号 signal它们是用来存放各种类型数据的容器
vhdl的操作符包括逻辑操作符、关系操作符、算术操作符、符号操作符
vhdl的顺序语句只能出现在进程 process、函数 function、过程 procedure中,按照书写顺序自上而下,一条一条执行。
vhdl的进程(process)语句是由 顺序语句 组成的,但其本身却是 并行语句 maxplus ⅱ支持图形、符号、文本、波形等不同编辑方式
指定设计电路的输入/输出端口与目标芯片引脚的连接关系的过程称为引脚锁定
在完成设计电路的输入/输出端口与目标芯片引脚的锁定后,再次对设计电路的仿真称时序仿真或后仿真
图形文件设计结束后一定要通过 仿真,检查设计文件是否正确
以eda方式设计实现的电路设计文件,最终偶可以编程下载到 fpga 和 cpld 芯片中,完成硬件设计和验证
max+plus的文本文件类型是(后缀名).vhd 在pc上利用vhdl进行项目设计,不允许在 根目录 下进行,不惜在根目录为设计建立一个工程目录(文件夹)vhdl源程序的文件名应与 实体名 相同,否则无法通过编译 eda 名词解释
: 复杂可编程逻辑器件 : 硬件描述语言 :查找表(look-up-table):专用集成电路 :单芯片系统
:超高速硬件描述语言 :现场可编程门阵列 :寄存器传输级 :可编程片上系统
:嵌入式阵列块 :逻辑阵列块
:知识产权核
:电子设计自动化
:美国电气电子工程师协会 :在系统编程
:参数可定制红模块库 :串口(通用异步触发器)
18.元件例化:将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。19.简要解释 jtag,指出 jtag 的用途:jtag:联合测试行动小组的简称,又意指其提出的一种硬件测试标准,常用于器件测试、编程下载和配置等操作。
EDA基础知识篇四
实验一 2选1多路选择器vhdl设计
一、实验目的:
熟悉利用max+plusⅱ的vhdl文本设计流程全过程,学习简单组合逻辑电路的设计、多层次电路的设计、仿真和硬件测试。
二、实验内容:
按照max+plusⅱ的文本输入设计方法与流程完成2选1多路选择器的输入()和仿真测试等步骤,给出仿真波形图。最后在实验系统上进行硬件测试,实际验证本项设计的功能。
三、实验步骤:
1、根据2选1多路选择器的工作原理,编写2选1的vhdl源程序,并输入计算机,文件名将源程序存盘。2选1多路选择器的参考程序如下:
【例1-1】
entity mux21a is port(a, b : in bit;s : in bit;y : out bit);end entity mux21a;architecture one of mux21a is signal d,e : bit;begin d <= a and(not s);e <= b and s;y <= d or e;end architecture one;
【例1-2】
entity mux21a is port(a, b : in bit;s : in bit;y : out bit);end entity mux21a;architecture one of mux21a is begin y <=(a and(not s))or(b and s);end architecture one;
【例1-3】 entity mux21a is port(a, b, s: in bit;y : out bit);end entity mux21a;architecture one of mux21a is begin process(a,b,s)begin if s = '0' then y <= a;else y <= b;end if;end process;end architecture one;
2、对文件编译后,再进行波形仿真,完成输入信号a、b、s 输入电平的设置,启动仿真器simulator,观察输出波形的情况。
3、锁定引脚、编译并编程下载。参选实验电路模式5和附表一,键
1、键
2、键3为输入信号a、b、s分别锁定在ep1k30/50144-pin tqfp 目标芯片的8、9、10引脚,输出信号y锁定在目标芯片的20引脚。
4、硬件实测2选1多路选择器的逻辑功能。按动gw48实验板上的高低电平输入键
1、键
2、键3,得到不同的s、b、a输入组合;观察输出发光二极管d1的亮灭,检查2选1多路选择器的设计结果是否正确。
思考题
,并仿真设计结果。
实验报告要求:
写出实验源程序,画出仿真波形。分析实验结果,以及它们的硬件测试实验结果写进实验报告。写出心得体会。
实验二 d触发器的vhdl设计
一、实验目的:
熟悉利用max+plusⅱ的vhdl文本设计流程全过程,学习简单时序电路的设计、仿真和硬件测试。
二、实验内容:
按max+plusⅱ的文本输入设计方法与流程完成d触发器的vhdl设计、软件编译、仿真分析、硬件测试及详细实验过程。
d触发器的vhdl设计的参考程序如下:
【例2-1】
library ieee;use ;entity dff1 is port(clk : in std_logic;d : in std_logic;q : out std_logic);end;architecture bhv of dff1 is begin signal q1 : std_logic;--类似于在芯片内部定义一个数据的暂存节点 begin process(clk)begin if clk'event and clk = '1' then q1 <= d;end if;q <= q1;--将内部的暂存数据向端口输出 end process;end bhv;
三、实验步骤:
1、打开文本编辑器,输入d触发器的vhdl源程序,文件名将源程序存盘。
2、选择目标器件ep1k30/50144-pin tqfp。
3、文件编译后,再进行波形仿真,完成输入信号d、clk输入电平的设置,启动仿真器simulator,观察输出波形的情况。
4、锁定引脚、编译并编程下载。参选实验电路模式5和附表一,键1为输入信号d锁定在ep1k30/50144-pin tqfp 目标芯片的8引脚,输出信号q和nq锁定在目标芯片的20和21引脚。
实验报告要求:
写出实验源程序,画出仿真波形。分析实验结果,以及它们的硬件测试实验结果写进实验报告。写出心得体会。
实验三 含异步清0同步时钟使能的4位加法计数器设计
一、实验目的:
学习时序电路的设计、仿真和硬件测试,进一步熟悉vhdl设计技术。
二、实验原理:
图4-1 含计数使能、异步复位和计数值并行预置功能4位加法计数器
图4-1是一含计数使能、异步复位和计数值并行预置功能4位加法计数器,例4-1是其vhdl描述。由图4-1所示,图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;d[3..0]是4位数据输入端。当ena为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ena为'0'时将“0000”加载于锁存器。
三、实验内容:
1、按照vhdl文本输入设计方法和步骤,在max+plusii上对例4-1 进行编辑、编译、综合、适配、仿真。说明例4-1中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。
[例4-1] library ieee;use ;use ;entity cnt4b is port(clk : in std_logic;rst : in std_logic;ena : in std_logic;outy : out std_logic_vector(3 downto 0);cout : out std_logic);end cnt4b;architecture behav of cnt4b is signal cqi : std_logic_vector(3 downto 0);begin p_reg: process(clk, rst, ena)begin if rst = '1' then cqi <= “0000”;elsif clk'event and clk = '1' then if ena = '1' then cqi <= cqi + 1;end if;end if;
outy <= cqi;end process p_reg;--进位输出
cout<=cqi(0)and cqi(1)and cqi(2)and cqi(3);end behav;
2、引脚锁定以及硬件下载测试。
建议选实验电路模式5,用键8(pio7)控制rst;用键7(pio6)控制ena;计数溢出cout接发光管d8(pio15);outy是计数输出,接数码1(pio19-pio16,低位靠右);时钟clk接clock0(引脚号为54),通过短路帽选择4hz信号。引脚锁定窗后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。
结合第五章例题使学生能够提高对具有计数使能、异步复位和计数值并行预置功能功能的计数器中各功能的实现的认识、并能完成设计。
思考题1:
在例4-1 中是否可以不定义信号 cqi,而直接用输出端口信号完成加法运算,即 : outy <= outy + 1 ?
思考题2:
修改例4-1,用进程语句和if语句实现进位信号的检出。
实验报告要求:
写出实验源程序,画出仿真波形。分析实验结果,以及它们的硬件测试实验结果和附加内容实验情况写进实验报告。写出心得体会。
实验四 7段数码显示译码器设计
一、实验目的:
学习7段数码显示译码器设计;学习多层次设计方法。
二、实验原理:
7段数码是纯组合电路,通常的小规模专用ic,如74或4000系列的器件只能作十进制bcd码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用vhdl译码程序在fpga或cpld中实现。本项实验很容易实现这一目的。例5-1作为7段bcd码译码器的设计,输出信号led7s的7位分别接如图5-1数码管的7个段,高位在左,低位在右。例如当led7s输出为 “1101101” 时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1,接有高电平的段发亮,于是数码管显示“5”。
三、实验内容:
1、说明例5-1中各语句的含义,以及该例的整体功能。在max+plusii上对以下该例进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形(提示:用输入总线的方式给出输入信号仿真数据)。
[例5-1] library ieee;use ;entity decl7s is port(a : in std_logic_vector(3 downto 0);led7s : out std_logic_vector(6 downto 0));end;architecture one of decl7s is begin process(a)begin case a(3 downto 0)is when “0000” => led7s <= “0111111”;--x“3f”0 when “0001” => led7s <= “0000110”;--x“06”1 when “0010” => led7s <= “1011011”;--x“5b”2 when “0011” => led7s <= “1001111”;--x“4f”3 when “0100” => led7s <= “1100110”;--x“66”4 when “0101” => led7s <= “1101101”;--x“6d”5 when “0110” => led7s <= “1111101”;--x“7d”6 when “0111” => led7s <= “0000111”;--x“07”7 when “1000” => led7s <= “1111111”;--x“7f”8 when “1001” => led7s <= “1101111”;--x“6f”9 when “1010” => led7s <= “1110111”;--x“77”10 when “1011” => led7s <= “1111100”;--x“7c”11 when “1100” => led7s <= “0111001”;--x“39”12 when “1101” => led7s <= “1011110”;--x“5e”13 when “1110” => led7s <= “1111001”;--x“79”14 when “1111” => led7s <= “1110001”;--x“71”15 when others => null;end case;end process;end;
2、引脚锁定以及硬件下载测试。建议选实验电路模式6,用数码8显示译码输出(pio46--pio40),键
8、键
7、键
6、键5四位控制输入,硬件验证译码器的工作性能。
3、用vhdl例化语句(参考实验1中的1位全加vhdl文本输入设计)按图5-2 的方式,以例4-1和例5-1为底层元件,完成顶层文件设计,并重复以上实验过程。注意图5-2中的tmp是4位总线,led是7位总线。对于引脚锁定和实验,建议仍选实验电路模式6,用数码8显示译码输出,用键3作为时钟输入(每按2次键为1个时钟脉冲),或直接时钟信号clock0。
实验报告要求:
写出实验源程序,画出仿真波形。分析实验结果,以及它们的硬件测试实验结果写进实验报告。写出心得体会。
实验五 2位数的十进制计数器的设计
一、实验目的:
通过实验让读者掌握复杂时序逻辑电路的eda原理图输入设计法和文本输入设计法,通过电路仿真,进一步了解有时钟使能的2位十进制计数器的功能和特性。
二、实验原理:
有时钟使能的2位十进制计数器是频率计的核心元件之一,这里用2个74162来设计完成。
三、实验内容:
1.用文本输入设计方法编写2位十进制计数器的vhdl源程序,文件名存盘,参考程序如下: library ieee;
use ;use ;entity twin10_v is port(clrn,ent1,enp,clk : in std_logic;
qa,qb
: out std_logic_vector(3 downto 0);
co
: out std_logic);end twin10_v;architecture a of twin10_v is signal ent2 : std_logic;begin
process(clk)
variable tmpa,tmpb :std_logic_vector(3 downto 0);
begin if(clk'event and clk='1')then
if clrn='0' then tmpa := “0000”;tmpb := “0000”;
elsif(ent1 and enp)='1' then
if tmpa=“1001” then
tmpa:=“0000”;
if tmpb=“1001” then tmpb:=“0000”;
else tmpb:= tmpb+1;
end if;
else tmpa := tmpa+1;
end if;
end if;
end if;
qa <= tmpa;ent2<=tmpa(0)and tmpa(3)and ent1;
qb <= tmpb;co<= tmpb(0)and tmpb(3)and ent2;end process;end a;2.同样编译后再进行波形仿真
按照波形仿真的操作步骤,对2位十进制计数器进行波形仿真。
3.锁定引脚、编译并编程下载。参选实验电路模式5和附表一,引脚锁定目标芯片为ep1k30/50144-pin tqfp 实验报告要求:
写出实验源程序,画出仿真波形。对设计的2位十进制计数器进行实验结果的分析,以及硬件测试实验结果写进实验报告。写出心得体会。
EDA基础知识篇五
eda基础总结
综述部分
的中文全称为电子设计自动化,英文全名为electronic design automation。平台常用的两种输入电路的方法是:电路原理图输入法、hdl输入法。平台工作流程:电路输入、综合优化、功能仿真、布局布线、门级仿真。
数字电路部分
中常用的仿真语言为verilog和vhdl。
其英文全名为vhsic hardware description language,而vhsic则是very high speed intergeraterd circuit的缩写词,意为甚高速集成电路,故vhdl其准确的中文译名为甚高速集成电路的硬件描述语言。
g hdl其英文全名为verilog hardware decription language,hdl中文译名为硬件描述语言。
g和vhdl的比较
共同点:能形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围的描述;可借用高级语言的精巧结构来简化电路行为的描述;具有电路仿真与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合转换;硬件描述与实现工艺无关;便于文档管理;易于理解和设计重用。
不同点:verilog在系统级抽象方面略差,vhdl在门级开关电路方面略差。
5.软核、固核和硬核
软核:功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的verilog模型。
固核:在某一种现场可编程门列器件上实现的经验证是正确的,且总门数在5000门以上的电路结构编码文件。
在某一种专用集成电路工艺的器件上实现的,经验证是正确的,且总门数在5000门以上的电路结构版图掩膜。6.自顶向下(top down)设计
7.自底向上(down top)设计
8.名词解释:
asic:application specific integrated circuit,专用集成电路。
fpga:field programmable gate array,现场可编程门阵列。pld:programmable logic device,可编程逻辑器件。
verilog编程题: 数据比较器(2位)//数据比较器
module compare(equal, a, b);input a,b;output equal;reg equal;always @(a or b)if(a == b)equal = 1;else equal = 0;endmodule
//数据比较器测试代码 `timescale 1ns/1ns `include “./1-1.v” module t;reg a,b;wire equal;initial begin a=0;b=0;#100 a=0;b=1;#100 a=1;b=1;#100 a=1;b=0;#100 a=0;b=0;#100 $stop;end
compare m(.equal(equal),.a(a),.b(b));endmodule
数据比较器(8位)
module compare8(equal, a, b);input [7:0]a, b;output equal;reg equal;always @(a or b)if(a > b)begin equal = 1;end else begin equal = 0;end endmodule 分频器
module half_clk(reset, clk_in, clk_out);input clk_in, reset;output clk_out;reg clk_out;
always @(posedge clk_in)begin if(!reset)clk_out = 0;else clk_out = ~clk_out;end endmodule
10m时钟分频为500k module fdivision(reset, mb, kb);input mb, reset;output kb;reg kb;reg [7:0] j;
always @(posedge mb)if(!reset)begin kb <= 0;j <= 0;end else begin if(j == 19)begin j <= 0;kb <= ~kb;end else j <= j+1;end endmodule
译码电路
`define plus 3'd0 `define minus 3'd1 `define band 3'd2 `define bor 3'd3 `define unegate 3'd4
module alu(out, opcode, a, b);output[7:0] out;reg[7:0] out;input[2:0] opcode;input[7:0] a,b;
always @(opcode or a or b)begin case(opcode)`plus: out = a + b;`minus: out = a-b;`band: out = a & b;`bor: out = a | b;`unegate: out = ~a;default: out = 8'hx;endcase end endmodule
八路数据选择器
module selecting8(addr, in1, in2, in3, in4, in5, in6, in7, in8, dataout, reset);input [2:0] addr;input [3:0] in1,in2,in3,in4,in5,in6,in7,in8;input reset;output [3:0] dataout;reg [3:0] dataout;
always @(addr or in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8 or reset)begin if(!reset)case(addr)3'b000: dataout = in1;3'b001: dataout = in2;3'b010: dataout = in3;3'b011: dataout = in4;3'b100: dataout = in5;3'b101: dataout = in6;3'b110: dataout = in7;3'b111: dataout = in8;endcase else dataout = 0;end endmodule
逻辑运算电路
module tryfunct(clk, n, result, reset);output[31:0] result;input[3:0] n;input reset, clk;reg[31:0] result;
always @(posedge clk)begin if(!reset)result <=0;else begin result <= n*factorial(n)/((n*2)+1);end end
function [31:0] factorial;input [3:0] operand;reg [3:0] index;begin factorial = operand ? 1:0;for(index = 2;index <= operand;index = index + 1)factorial = index *factorial;end endfunction endmodule
module tryfunct(clk, n, result, reset);output[31:0] result;input[3:0] n;input reset, clk;reg[31:0] result;
always @(posedge clk)begin if(!reset)result <=0;else begin result <= n*factorial(n)/((n*2)+1);end end
function [31:0] factorial;input [3:0] operand;reg [3:0] index;begin factorial = operand ? 1:0;for(index = 2;index <= operand;index = index + 1)factorial = index *factorial;end endfunction endmodule
高速排序组合逻辑
module sort4(ra, rb, rc, rd, a, b, c, d);output[3:0] ra, rb, rc, rd;input[3:0] a, b, c, d;reg[3:0] ra, rb, rc, rd;reg[3:0] va, vb, vc, vd;
always @(a or b or c or d)begin {va, vb, vc, vd} = {a, b, c, d};sort2(va, vc);sort2(vb, vd);sort2(va, vb);sort2(vc, vd);sort2(vb, vc);{ra, rb, rc, rd} = {va, vb, vc, vd};end
task sort2;input[3:0]x, y;reg[3:0] tmp;if(x > y)begin tmp = x;x = y;y = tmp;end endtask endmodule
检测5位二进制序列10010 module seqdet(x, z, clk, rst, state);input x, clk, rst;output z;output[2:0] state;reg[2:0] state;wire z;
parameter idle = 'd0, a = 'd1, b = 'd2, c = 'd3, d = 'd4, e = 'd5, f = 'd6, g = 'd7;
assign z =(state == e && x == 0)? 1:0;
always @(posedge clk)if(!rst)begin state <= idle;end else case(state)idle: if(x == 1)begin state <= a;end a: if(x == 0)begin state <= b;end b: if(x == 0)begin state <= c;end else begin state <= f;end c: if(x == 1)begin state <= d;end else begin state <= g;end d: if(x == 0)begin state <= e;end else begin state <= a;end e: if(x == 0)begin state <= c;end else begin state = a;end f: if(x == 1)begin state <= a;end else begin state <= b;end g: if(x == 1)begin state <= f;end default: state = idle;endcase endmodule
模拟电路部分
1.目前,集成电路最常用的材料是单晶硅。
2.集成电路的生产由设计、制造、封装三部分组成。
3.集成电路中基片主要制作工艺为:光刻、扩散、注入、刻蚀、键合。
4.集成电路中基片的制造步骤为:光刻、扩散、注入、刻蚀。
5.衡量集成电路产业水平的两个主要参数为:硅晶圆片直径和光刻精度(特征尺寸)。这两个参数在业界达到的水平为:硅晶圆片直径12英寸(300mm),光刻精度0.13um。主流水平为:硅晶圆片直径200mm,光刻精度0.18um。
6.模拟电路中常用的仿真算法是spice,英文全名为simulation program with integrated circuit emphasis。
7.世界上设计eda软件实力最强的两个公司为cadence和synopsys。其中,cadence的优势为电路布局布线,synopsys的优势为逻辑综合仿真。
nch是加拿大iit公司退出的电子线路仿真软件。它可以对模拟、数字和模拟/数字混合电路进行仿真,克服了传统电子产品的设计受实验室客观条件限制的局限性,用虚拟的元件搭接各种电路,用虚拟的仪表进行各种参数和性能指标的测试。特点如下:(1)系统集成度高,界面直观,操作方便。(2)具备模拟、数字及模拟/数字混合电路仿真。(3)提供较为丰富的元器件库。(4)电路分析手段完备。(5)输出方式灵活。(6)兼容性好。语言举例: example
vcc 8 0 12
**** 文件名 任意名都可以 但必须要有****
**** 电源正极接于节点8 负极接于0 电压为12v **** vee 0 9 12
**** 电源正极接于节点0,负接接于节点9,电压为12v;**** vin 1 0 ac 1 sin(0 0.1 5meg)
**** 信号源vin 接于1 和接点0;交流1v 进行交流分析 同时加一个正弦信号 直流偏置为0,振幅为0.1v频率为5m的交流信号源,进行瞬态分析;**** rc1 8 4 10k
rc2 8 5 10k
rs 2 1 1k
rs1 8 7 20k
rs2 3 0 1k
**** 电阻rc1 分别接于节点8 节点4;阻值为10k;**** **** 电阻rc2 分别接于节点8 节点5;阻值为10k;**** **** 电阻rs 分别接于节点1 节点0;阻值为1k;**** **** 电阻rs1 分别接于节点8 节点7 阻值为20k;**** **** 电阻rs2 分别接于节点3 节点0 阻值为1k;**** q1 4 2 6 mod1
**** 三极管q1 cbe 分别接于节点 4 2 6 模型为mod1**** q2 5 3 6 mod1
**** 三极管q2 cbe 分别接于节点 5 3 6 模型为mod1**** q3 6 7 9 mod1
**** 三极管q3 cbe 分别接于节点 6 7 9 模型为mod1**** q4 7 7 9 mod1
**** 三极管q4 cbe 分别接于节点 7 7 9 模型为mod1****.op
**** 求出直流工作点.本电路共有9个节点;温度值为27度;****.dc vin-.15.15.01
**** dc为直流分析语句,分析输入电压从-0.15v到0.15v扫描特性,每0.1v作一次分析;****.print dc v(4)v(5)
****.print 为打印语句,其中dc是打印直流内容,这里规定打印节点4和5上的电位,既相对地参考点的电压随输入的变化关系;****.plot dc v(4)v(5)
****.plot为绘图语句,其中dc表示绘制直流分析的传输特性,说明是绘制v(4)v(5)的输出电压和vin关系曲线;****.tf v(5)vin
****.tf是转移函数分析语句,该句表示计算直流分析时,小信号输出电压v(5)和输入电压vin的转移函数值,输入电阻和输出电阻;****.ac dec 10 25k 250meg
****.ac是交流分析语句,是在规定的频率范围内从25k到250m进行频域分析dec表示按数量级变化,10表示每一数量级中取的分析点数目;****.print ac vm(5)vp(5)
**** 打印ac分析vm(5)vp(5)的取点数;****.plot ac vm(5)vp(5)
**** 绘制ac分析vm(5)vp(5)的取点数;****.tran 4n 100n 1n
****.tran是瞬态分析语句,并规定了打印或绘图时间增量为4n秒,计算终止时间为100n秒,打印或绘图开始时间1ns*;****.print tran v(5)v(4)
****.打印出4.5点的电压随时间变化;****.plot tran v(5)v(4)
****.绘图出节点4.5的电压随时间变化;****.end
**** 结束语句...一定要有;****