首页作文体裁EDA大作业交通灯 EDA大作业简单交通灯EDA大作业交通灯 EDA大作业简单交通灯

EDA大作业交通灯 EDA大作业简单交通灯


在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。范文书写有哪些要求呢?我们怎样才能写好一篇范文呢?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。

EDA大作业交通灯 EDA大作业简单交通灯篇一

王斌

guizhou university eda实验报

实验课程名称 eda技术与实验 实验项目名称 单管低频放大器 学 院 科技学院 专 业 班 级 2010级电子信息科学与技术 学 生 姓 名 王斌 学 号 1020040464 任 课 教 师 李良荣

王斌

单管低频放大器

1、实验目的

(1)学习元器件的放置和手动、自动连线方法;(2)熟悉元器件标号及虚拟元件值的修改方法;(3)熟悉节点及标注文字的放置方法;(4)熟悉电位器的调整方法;(5)熟悉信号源的设置方法;(6)熟悉示波器的使用方法;

(7)熟悉放大器的主要性能指标的测试方法;

(8)熟悉示波器、信号源、万用表、电压表、电流表的应用方法;(9)学习实验报告的书写方法。

2、实验内容 a:测试电路如图

图1——0(1)测量ic 常规方法测量ve。用ie=ve/re ≈ ic计算集电极电流。如图1——1所示。测试的ve=1.589v

ieicibi c

ic则ie=ve/re ≈ ic=1.589ma

vere1.5891000=1.589v 2

王斌

检测是否正确:如图1——2

图1——2 测试正确!

结论:测试看出,两种方法的结果是有些误差的,原因在于re的值是有误差的,调入器件时计算机在器件的误差范围内任意取值作计算依据,在实际电路中也往往如此,用万用表测量晶体管发射极电阻上的电压来测量电路的ic是实际电路的设计时的一般方法。

(2)信号发生器设置正旋波,f=1khz,v=10mv;

如图1——3

王斌

图1——3 仿真,调整示波器观察后得到结果。

a通道(x1,y1)=(221.048ms ,-1.146v)、b通道为(222.085ms , 9.995mv)。利用两条时间差可以分析信号的周期、频率等参数(图中t2-t1=1.036ms为周期)。信号类型为“dc”方式,波形包含直流成分,“0”禁止输入,“ac”方式不包含直流成分。

结论:保持信号源不变,调整r5为5000(接入电阻的阻值为505000=25k,如果滑动变阻器增大,调到7400左右),信号输出幅度最大,失真较小,则r5的取值在56k左右

王斌

最佳。

(3)调整r5,在示波器上观察波形,是波形输出幅度最大,且不失真;

a:减小电阻会使电路失真,且截止失真;

b:真大电阻会是电路的放大倍数增大;

(4)测量单管放大器的输入输出电阻ri、r0;

王斌

输入电阻:

rivirvsviviii=

7.0713.6931031.914k

输出电阻:用“替代法”计算r0,闭合开关,得到vl的值为4.614mv,断开开关,得到v0的值为4.722mv。

王斌

r0(v0vl1)31034.722313107.022k 4.614

(5)用“失真度测量仪”测量电路的失真度;

在输入信号3mv,f=1khz时,测得失真度:2.767%。在输入信号10mv,f=1khz时,测得失真度:9.193%。如图1——4。

结论:电路的失真度为9.193% 7

王斌

图1——4(6)用“波特图示仪”测试电路的幅频特性曲线。

根据带宽的测量原理,移动测试指针,使幅度值下降3db,找到半功率点=26.459mhz。如图1——5

=23.698hz,图1——5 测得fwfhfl26.459mhz。

王斌

心得:通过这次实验让我对multisim 更进一步的了解和学习,也对很多电路的分析应用加深了了解。!

EDA大作业交通灯 EDA大作业简单交通灯篇二

班 级 021291 学 号 02129057

eda实验报告

学 院 电子工程学院

专 业 电子信息工程

学生姓名

02129057

导师姓名

纠博

交通控制器

一. 设计目标

设计一个十字路口交通控制系统,其东西,南北两个方向除了有红、黄、绿灯指示是否允许通行外,还设有时钟,以倒计时方式显示每一路允许通行的时间,绿灯,黄灯,红灯的持续时间分别是70、5和75秒。当东西或南北两路中任一道上出现特殊情况,例如有消防车,警车要去执行任务,此时交通控制系统应可由交警手动控制立即进入特殊运行状态,即两条道上的所有车辆皆停止通行,红灯全亮,时钟停止计时,且其数字在闪烁。当特殊运行状态结束后,管理系统恢复原来的状态,继续正常运行。

二. 设计思路与实施方案

1.设计目标思路整理

在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一方向(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。

设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是70s、5s和75s。

当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。

2.原理分析

本系统主要由分频器,计数器,控制器,倒计时显示器等电路组成。分频器将晶振送来的50mhz信号变为1hz时钟信号;计数器实现总共150秒的计数,它也是交通控制系统的一个大循环;控制器控制系统的状态转移和红黄绿灯的信号输出;倒计时显示电路实现75秒,70秒及5秒的倒计时和显示功能。整个系统的工作时序受控制器控制,是系统的核心。基于此,做出交通控制系统的转移图如下:

其中,s0:a方向绿灯亮,b方向红灯亮,此状态持续70秒;

s1:a方向黄灯亮,b方向红灯亮,此状态持续5秒;

s2:a方向红灯亮,b方向绿灯亮,此状态持续70秒;

s3:a方向红灯亮,b方向黄灯亮,此状态持续5秒;

s4:紧急制动状态,a方向红灯亮,b方向红灯亮,当hold=‘0‘时进入这种状态。

当紧急制动信号无效时,状态按照s0—s1—s2—s3—s0循环;当紧急制动信号有效时,立即进入s4,两个方向红灯全亮,计数器停止计数。

三. 设计过程

1.电路设计

交通控制系统顶层原理图如下图示,它主要由50mhz分频器模块,控制器,倒计时计数器模块,7段数码管组成。

(1)分频器的设计

分频器外部接口如右图所示:

library ieee;use ;use ;

entity fp50m is port(clk : in std_logic;

reset : in std_logic;

clk_out: out std_logic);end entity fp50m;

architecture behavior of fp50m is signal count : std_logic_vector(31 downto 0);signal q:std_logic;begin process(reset,clk)

begin if(reset = '0')then

count <=(others=>'0');--复位计数器

elsif clk'event and clk='1' then

count<=count+1;

if(count = 25000000)then

q<= not q;--反置输出

count <=(others=>'0');

end if;

end if;

clk_out<=q;end process;end architecture behavior;由于50mhz过大,在这里就不展示分频时序图。(2)控制器的设计

控制器control的逻辑符号如下图所示。其中,clk为时钟输入信号;hld为紧急制动信号;ared,agreen,ayellow为东西方向驱动红灯,绿灯及黄灯指示的输出信号;bred,bgreen,byellow分别为南北方向驱动红灯。绿灯及黄灯指示的输出信号。控制器按照上边的状态转移图所示控制系统的时序,即为个方向红,绿,黄灯的亮灭时间。: library ieee;use ;use ;

entity control is

port(clk,hold:in std_logic;

ared,agreen,ayellow,bred,bgreen,byellow:out std_logic);end control;

architecture behavior of control is

type state_type is(s0,s1,s2,s3,s4);

signal current_state,next_state:state_type;

signal counter:std_logic_vector(6 downto 0);

begin synch:process begin

wait until clk'event and clk='1';

if hold='0' then

--当紧急制动信号有效时,计数器停止工作

counter<=counter;

else

--当紧急制动信号无效时,计数器进行周期为150s的计数

if counter<149 then

counter<=counter+1;

else

counter<=(others=>'0');

end if;

end if;end process;

process

--状态机的状态转移描述 begin

wait until clk'event and clk='1';

current_state<=next_state;end process;

state_trans:process(current_state)begin

case current_state is when s0=>

if hold='0' then

next_state<=s4;

else

if counter<69 then

next_state<=s0;

else

next_state<=s1;

end if;

end if;when s1=>

if hold='0' then

next_state<=s4;

else

if counter<74 then

next_state<=s1;

else

next_state<=s2;

end if;

end if;when s2=>

if hold='0' then

next_state<=s4;

else

if counter<144 then

next_state<=s2;

else

next_state<=s3;

end if;

end if;when s3=>

if hold='0' then

next_state<=s4;

else

if counter<149 then

next_state<=s3;

else

next_state<=s0;

end if;

end if;when s4=>

if hold='0' then

next_state<=s4;

else

if counter<69 then

next_state<=s0;

elsif counter<74 then

next_state<=s1;

elsif counter<144 then

next_state<=s2;

elsif counter<149 then

next_state<=s3;

end if;

end if;

end case;end process;

output:process(current_state)begin case current_state is when s0=>

ared<='0';

agreen<='1';

ayellow<='0';

bred<='1';

bgreen<='0';

byellow<='0';when s1=>

ared<='0';

agreen<='0';

ayellow<='1';

bred<='1';

bgreen<='0';

byellow<='0';

--每种状态下两个路口红绿灯的状态描述

when s2=>

ared<='1';

agreen<='0';

ayellow<='0';

bred<='0';

bgreen<='1';

byellow<='0';when s3=>

ared<='1';

agreen<='0';

ayellow<='0';

bred<='0';

bgreen<='0';

byellow<='1';when s4=>

ared<='1';

agreen<='0';

ayellow<='0';

bred<='1';

bgreen<='0';

byellow<='0';when others => null;end case;end process;end behavior;

control的时序图

由图可以看出紧急制动有效,即’hold’=0时,两个方向都是红灯。而紧急制动无效时,为s1状态,一方为绿灯,另一方红灯。(3)倒计时计数器upm75(x)的设计 倒计时计数器upm75(x)的逻辑符号如下图所示。其中,clk,cr分别为时钟和清零端,en0~en2分别表示倒计数75s,70s,5s使能端,ql[3..0],qh[3..0],oc分别为bcd码的个位,十位跟进位输出。

vhdl描述upm75(x).vhd如下: library ieee;use ;use ;entity upm75 is

--实体声明 port(clk:in std_logic;

en0,en1,en2:in std_logic;

cr,hld:in std_logic;

ql,qh:out std_logic_vector(3 downto 0);

oc:out std_logic);end upm75;

architecture behavior of upm75 is

--结构体

signal coul,couh:std_logic_vector(3 downto 0);begin

process(cr,clk,hld,en0,en1,en2)

begin

if cr='0' then

--异步清零

coul<=“0000”;

couh<=“0000”;

elsif clk'event and clk='1' then

if hld='1' then

--紧急制动无效时,计数器正常计数

if en0='1' then

--en0有效,倒计时75s

if(coul=0 and couh=0)then

--减法记到00后,重新指数75

coul<=“0101”;

couh<=“0111”;

elsif coul=0 then

--否则,个位记到0时置为9,十位减1

coul<=“1001”;

couh<=couh-1;

else

coul<=coul-1;

--否则,个位减1

end if;

end if;

if en1='1' then

--en1有效,倒计时70s

if(coul=0 and couh=0)then

coul<=“0000”;

couh<=“0111”;

elsif coul=0 then

coul<=“1001”;

couh<=couh-1;

else

coul<=coul-1;

end if;

end if;

if en2='1' then

--en2有效,倒计时5s

if(coul=0 and couh=0)then

coul<=“0101”;

couh<=“0000”;

elsif coul=0 then

coul<=“1001”;

couh<=couh-1;

else

coul<=coul-1;

end if;

end if;

else

coul<=coul;

--紧急制动有效时,各位保持不变

couh<=couh;

end if;

end if;

end process;

process(coul,couh)

begin

if(coul=0 and couh=0)then

--减到00时,借位输出

oc<='1';

else

oc<='0';

end if;

end process;

ql<=coul;

qh<=couh;end behavior;倒计时的时序仿真图如下: 1.75s倒计时

由图可以看出紧急制动有效时,停止计时,一直持续在75s,满足要求。2.70s倒计时

3.5s倒计时

(4)七段数码管的设计

分频器外部接口如右图所示: library ieee;use ;entity decl7s is

port(a : in std_logic_vector(3 downto 0);

hold:in std_logic;

clk:in std_logic;

led7s : out std_logic_vector(6 downto 0));end;architecture one of decl7s is begin process(a)begin if(hold = '0' and clk = '1')then led7s <= “0000000”;elsif(hold = '1')then case a is when “0000” => led7s <= “0111111”;when “0001” => led7s <= “0000110”;when “0010” => led7s <= “1011011”;when “0011” => led7s <= “1001111”;when “0100” => led7s <= “1100110”;when “0101” => led7s <= “1101101”;

when “0110” => led7s <= “1111101”;when “0111” => led7s <= “0000111”;when “1000” => led7s <= “1111111”;when “1001” => led7s <= “1101111”;when “1010” => led7s <= “1110111”;when “1011” => led7s <= “1111100”;when “1100” => led7s <= “0111001”;when “1101” => led7s <= “1011110”;when “1110” => led7s <= “1111001”;when “1111” => led7s <= “1110001”;when others => null;end case;end if;end process;end;

三. 遇到的问题及解决方法

1.七段数码管显示的数字并不是1,2,3…,将led7s的输出取反后,得到了正确的结果; 2.倒计时开始设计的是从74s,69s,4s开始计时的,后改为75s,70s,5s;

3.紧急制动有效时,计时停止,但不闪烁,之后在decl7s程序里加入了时钟,能够达到闪烁的效果。

四. 综合时序仿真结果及功能分析

总体电路图如下:

总体时序仿真:

由于50mhz太大,看不出多种状态间的变化,但通过仿真图可以看出一方是绿灯,而另一方是红灯。

五. 小结及心得体会

在本次实验中我选择的是交通灯,输出有很多种情况。该系统主要由分频器,计数器,控制器,倒计时显示器等电路组成。其中,分频器与七段数码管是小作业的时候做好的,控制器与倒计时计数器参考数电书完成。在实验过程中,出现了很多的问题,多亏了同学和老师的帮助,有很多问题都是由于粗心导致的,这又一次说明了编程是需要细心和耐心的,一个小小的错误就会影响到整个运行结果。所以我觉得,结果固然重要,但是自己真正投入努力的过程更是值得被体会。

EDA大作业交通灯 EDA大作业简单交通灯篇三

——eda技术与verilog hdl

交通灯设计学 院:电子信息学院

专 业:电气工程及其自动化 班 级:

学 号: 姓 名: 1

目录

前言------1

一、设计任务-----------

2二、题目分析与整体构思--

2三、硬件电路设计-------3

四、程序设计-----------7

五、设计创新----------12

六、心得体会----------1

3七、参考文献----------13

前 言

伴随着社会的发展以及人类生活水平的提高,汽车的数量在d的dea技术的发展和应用领域的扩大与深入,eda技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。随着技术市场与人才市场对dea的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。一﹑设计任务

1.1设计要求: 设计一个十字路口的交通灯控制系统,用实验平台上的led发光二极管显示车辆通过的方向(东西和南北各一组),用数码管显示该方向的剩余时间。要求:工作顺序为东西方向红灯亮45秒,前40秒南北方向绿灯亮,后5秒黄灯亮。然后南北方向红灯亮45秒,前40秒东西方向绿灯亮,后5秒黄灯亮。依次重复。有紧急事件时允许将某方向一直开绿灯或者开红灯,另外允许特定情况两方向均为红灯,车辆禁行,比如十字路口恶性交通事故时,东西,南北两个方向均有两位数码管适时显示该方向亮灯时间。

二、题目分析与整体构思

(1)该交通灯控制器应具备的功能

设东西和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为红灯45sec,黄灯5sec,绿灯40sec,同时用数码管指示当前状态(红、黄、绿)剩余时间。另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。紧急状态解除后,重新计数并指示时间。(2)实现方案

一 从题目中计数值与交通灯的亮灭的关系如图(1)所示

三﹑硬件电路设计(1)分频器

分频器实现的是将高频时钟信号转换成底频的时钟信号,用于触发控制器、计数器和扫描显示电路。该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。

(2)控制器设计

控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。此外,当检测到特殊情况(hold=‘1’)发生时,无条件点亮红灯的二极管。本控制器可以有两种设计方法,一种是利用时钟烟的下降沿读取前级计数器的计数值,然后作出反应;另一种则是将本模块设计成纯组合逻辑电路,不需要时钟驱动。这两种方法各有所长,必须根据所用器件的特性进行选择:比如有些fpga有丰富的寄存器资源,而且可用与组合逻辑的资源则相对较少,那么使用第一种方法会比较节省资源;而有些cpld的组合逻辑资源则比较多,用第二种方法可能更好。

(3)计数器设计

这里需要的计数器的计数范围为0-90。计到90后,下一个时钟沿回复到0,开始下一轮计数。此外,当检测到特殊情况(hold=‘1’)发生是,计数器暂停计数,而系统复位信号reset则使计数器异步清零。

(4)分位译码电路设计--1 因为控制器输出的到计时数值可能是1位或者2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数,如25分为2和5,7分为0和7)。

与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。控制器中,引入了寄存器。为了让读者开拓眼界,分位电路就用组合逻辑电路实现。

(5)分位译码电路设计—2

(6)数码管驱动设计

串行连接,即每个数码管对应的引脚都接在一起(如每个数码管的a引脚都接到一起,然后再接到cpld/fpga上的一个引脚上),通过控制公共端为高电平控制相应数码管的亮、灭(共阴极数码管的公共端为高电平时,led不亮;共阳极的公共端为低电平时,led不亮)。

串行法的优点在于消耗的系统资源少,占用的i/o口少,n个数码管只需要(7+n)个引脚(如果需要小数点,则是(8+n)个引脚)。其缺点是控制起来不如并行法容易。

(7)下图为交通灯控制器的顶层文件连接图

四、程序设计

(1)分频器的设计

library ieee;use ;

entity fredevider is port(clkin:in std_logic;clkout:out std_logic);end;

architecture devider of fredevider is constant n:integer:=499;signal counter:integer range 0 to n;signal clk:std_logic;begin process(clkin)begin if rising_edge(clkin)then

if counter=n then counter<=0;clk<=not clk;else counter<=counter+1;end if;end if;end process;clkout<=clk;end;

四、程序设计

(1)分频器的设计

library ieee;use ;

entity fredevider is port(clkin:in std_logic;clkout:out std_logic);end;

architecture devider of fredevider is constant n:integer:=499;signal counter:integer range 0 to n;signal clk:std_logic;begin process(clkin)begin if rising_edge(clkin)then if counter=n then counter<=0;clk<=not clk;else counter<=counter+1;end if;end if;end process;clkout<=clk;end;(3)计数器的设计

这里计数器的计数范围为0—45s。计到45后,下一个时钟沿回复到0,开始下一轮计数.此外,当检测到特殊情况(hold=‘1‘)发生时,计数器暂停计数,而系统复位号reset则使计数器异步清0。程序如下:

library ieee;use ;entity counter is port(clock:in std_logic;reset:in std_logic;hold:in std_logic;countnum:buffer integer range 0 to 90);end;architecture behavior of counter is begin process(reset,clock)begin if reset='1' then countnum<=0;elsif rising_edge(clock)then if hold='1' then countnum<=countnum;else if countnum=90 then countnum<=0;else countnum<=countnum+1;end if;end if;end if;end process;end;(4)分位译码电路设计--1 library ieee;use ;entity fenwei is port(numin:in integer range 0 to 45;numa,numb:out integer range 0 to 9);end;

architecture behavior of fenwei is begin process(numin)begin if numin>=40 then numa<=4;numb<=numin-40;elsif numin>=30 then numa<=3;numb<=numin-30;elsif numin>=20 then numa<=2;numb<=numin-20;elsif numin>=10 then numa<=1;numb<=numin-10;else numa<=0;numb<=numin;end if;end process;end;

(5)分位译码电路设计—2 use ;entity fenwei2 is port(numin:in integer range 0 to 45;numc,numd:out integer range 0 to 9);end;architecture behavior of fenwei2 is begin process(numin)begin if numin>=40 then numc<=4;numd<=numin-40;elsif numin>=30 then numc<=3;numd<=numin-30;

elsif numin>=20 then numc<=2;numd<=numin-20;elsif numin>=10 then numc<=1;numd<=numin-10;else numc<=0;numd<=numin;end if;end process;end;

(6)数码管驱动设计 library ieee;use ;entity bcd_data is port(bcd_data:in std_logic_vector(3 downto 0);segout: out std_logic_vector(6 downto 0));end;architecture behavior of bcd_data is begin process(bcd_data)begin case bcd_data is when “0000”=>segout<=“1111110”;when “0001”=>segout<=“0110000”;when “0010”=>segout<=“1101101”;when “0011” =>segout<=“1111001”;when “0100” =>segout<=“0110011”;when “0101”=>segout<=“1011011”;when “0110”=>segout<=“0011111”;when “0111”=>segout<=“1110000”;when “1000” =>segout<=“1111111”;when “1001” =>segout<=“1110011”;when others =>null;end case;end process;end;

library ieee;use ;use ;entity dtsm is port(clk:in std_logic;numa,numb,numc,numd: in std_logic_vector(3 downto 0);segout1:out std_logic_vector(6 downto 0);led_sel: out std_logic_vector(3 downto 0));end dtsm;architecture bhv of dtsm is component bcd_data is port(bcd_data:in std_logic_vector(3 downto 0);segout:out std_logic_vector(6 downto 0));end component;signal x:std_logic_vector(3 downto 0);signal q:std_logic_vector(1 downto 0);begin p1:process(clk)begin if clk'event and clk ='1' then q<= q + '1';end if;end process;

p2:process(q)begin case q is when“00”=>led_sel<=“1110”;x<=numd;when“01”=>led_sel<=“1101”;x<=numc;when“10”=>led_sel<=“1011”;x<=numb;when“11”=>led_sel<=“0111”;x<=numa;when others=>null;end case;end process;u1:bcd_data port map(bcd_data=>x,segout=>segout1);end

五﹑设计创新

1﹑模块化编程,模块化接线,再编译总原理图,思路比较清楚解容易。2﹑可以比较容易的改变红绿灯的时间。3﹑有的模块可以供其它任务通用。

六﹑心得体会

eda设计我感觉程序调试最重要,试验软件、硬件熟悉其次。我在编完各模块程序之后,编译查错最初有三十几个错误,有输入错误、语法错误。一遍一遍的变异查错,直到没有错误。必须注意工程名和实体名一致,不然一般会出错。在没有错误之后可以进行波型仿真。若与理想的不同,再查看程序,有无原理上的编辑错误或没有查出的输入错误。都通过可以进行管脚配对,把程序烧入芯片,在实物机上看结果,从显示中得出还需改正的地方,再去改程序。必须注意没改一次都要编译,重新烧入。七﹑参考文献

(1)杨颂华 ;数字电子技术基础.西安:西安电子科技大学。

(2)黄任;2005;vhdl入门.解惑.经典实例.经验总结.北京:北京航空航天大学出版社。

(3)徐志军,/fpga的开发与应用.北京:电子工业出版社。

(4)设计与应用.西安:西安电子科技大学出版社。

EDA大作业交通灯 EDA大作业简单交通灯篇四

现代eda技术及其发展

引言

随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,eda技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也逾益依赖于eda技术的应用。即使是普通的电子产品的开发,eda技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。不言而喻,eda技术将迅速成为电子设计领域中的极其重要的组成部分。

eda技 术

即电子设计自动(electronic designautomation)技术,以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门技术。eda技术是一种实现电子系统或电子产品自动化设计的技术,与电子技术、微电子技术的发展密切相关。同时它吸收了计算机科学领域的大多数最新研究成果,以计算机作为基本工作平台,利用计算机图形学、拓扑逻辑学、计算数学以至人工智能学等多种计算机应用学科的最新成果而开发出来的一整套电子cad通用软件工具,是一种帮助电子设计工程师从事电子组件产品和系统设计的综合技术。eda技术的出现,为电子系统设计带来了一场革命性的变化。没有eda技术的支持,想要完成上述超大规模集成电路的设计制造是不可想象的。

eda技术的主要内容

eda技术涉及面很广,内容丰富,从教学和实用的角度看,主要应掌握如下四个方面的内容:1)大规模可编程逻辑器件;2)硬件描述语言;3)软件开发工具;4)实验开发系统。其中,大规模可编程逻辑器件是利用eda技术进行电子系统设计的载体,硬件描述语言是利用eda技术进行电子系统设计的主要表达手段,软件开发工具是利用eda技术进行电子系统设计的智能化的自动设计工具,实验开发系统则是利用eda

技术进行电子系统设计的下载工具及硬件验证工具。大规模可编程逻辑器件pld(programmable logic device,可编程逻辑器件)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。fpga和cpld分别是现场可编程门阵列和复杂可编程逻辑器件的简称,两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或cpld/fpga。pld是电子设计领域中最具活力和发展前途的一项技术,pld能完成任何数字器件的功能。pld如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统,通过软件仿真,我们可以事先验证设计的正确性。在pcb完成以后,还可以利用pld的在线修改能力,随时修改设计而不必改动硬件电路。使用pld来开发数字电路,可以大大缩短设计时间,减少pcb面积,提高系统的可靠性。pld的这些优点使得pld技术在20世纪90年代以后得到飞速的发展,同时也大大推动了eda软件和硬件描述语言(hdl)的进步。硬件描述语言(hdl)硬件描述语言(hdl)是相对于一般的计算机软件语言如c、pascal而言的。hdl是用于设计硬件电子系统的计算机语言,它描述电子系统的逻辑功能、电路结构和连接方式。hdl具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化结构化设计方面,表现了强大的生命力和应用潜力。用hdl进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。就fpga/cpld开发来说,比较常用和流行的hdl主要有vhdl、verilog hdl、abel、ahdl、systemverilog和systemc。其中vhdl、verilog在现在eda设计中使用最多,也拥有几乎所有的主流eda工具的支持。而sys-temverilog和systemc这两种hdl语言还处于完善过程中。现在,vhdl和verilog作为ieee的工业标准硬件描述语言,又得到众多eda公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,vhdl与verilog hdl语言将承担起大部分的数字系统设计任务。

软件开发工具

这类软件一般由pld/fpga芯片厂家提供,基本都可以完成所有的设计输入(原理图或hdl),仿真,综合,布线,下载等工作。集成的pld/fpga开发环境供应商开发环境简介alteramaxplusiialtera的maxplusii曾经是最优秀的pld开发平台之一,适合开发早期的中小规

模pld/fpga使用者众多。目前altera已经停止开发maxplusii,而转向quartusii软件平台quartusiialtera公司新一代pld开发软件,适合大规模fpga的开发xilinxfoundationxilinx公司上一代的pld开发软件,目前xilinx已经停止开发foundation转向ise软件平台ise xilinx公司目前的fpga/pld开发软件

latticeispdesignexpertlattice公司的pld开发软件,目前最新软件改名为ispleverispleverlattice推出的最新一代pld集成开发软件,取代ispexpert成为fpga和pld设计的主要工具。实验开发系统提供芯片下载电路及eda实验/开发的外围资源(类似于用于单片机开发的仿真器),供硬件验证用。一般包括:1)实验或开发所需的各类基本信号发生模块,包括时钟、脉冲、高低电平等2)fpga/cpld输出信息显示模块,包括数据显示、发光管显示、声响指示等3)监控程序模块,提供“电路重构软配置4)目标芯片适配座以及上面的fpga/cpld目标芯片和编程下载电路。

eda技术的应用展望

eda技术将广泛应用于高校电类专业的实践教学和科研工作中与世界各知名高校相比,我国高等院校在eda及微电子方面的教学和科研工作有着明显的差距,我们的学生现在做的课程实验普遍陈旧,动手能力较差。从某种意义上来说,eda教学科研情况如何,代表着一个学校电类专业教学及科研水平的高低,而eda教学科研工作开展起来后,还会对微电子类、计算机类学科产生积极的影响,从而带动各高校相应学科的同步发展。eda技术将广泛应用于专用集成电路和新产品的开发研制中由于可编程逻辑器件性能价格比的不断提高,开发软件功能的不断完善,而且由于用eda技术设计电子系统具有用软件的方式设计硬件;设计过程中可用有关软件进行各种仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上等特点,使其将广泛应用于专用集成电路和机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域新产品的开发研制中。eda技术将广泛应用于传统机电设备的升级换代和技术改造传统机电设备的电器控制系统,如果利用eda技术进行重新设计或进行技术改造,不但设计周期短、设计成本低,而且将提高产品或设备的性能,缩小产品体积,提高产品的技术含量,提高产品的附加值。eda技术将在国防现代化建设中发挥重要的作用eda技术是电子设计领域的一场革命,目前正处于高速发展阶段,每年都有新的eda工具问世,我国eda技术的应用水平长期落后于发达国

家,如果说用于民品的核心集成电路芯片还可以从国外买的到的话,那么军用集成电路就必须依靠自己的力量研制开发,因为用钱是买不到国防现代化的,特别是中国作为一支稳定世界的重要力量,更要走自主开发的道路。强大的现代国防必须建立在自主开发的基础上,因此,广大电子工程技术人员应该尽早掌握这一先进技术,这不仅是提高设计效率和我国电子工业在世界市场上生存、竟争与发展的需要,更是建立强大现代国防的需要。

我国eda技术的出路

中国ic设计公司任重道远近年来我国的半导体市场发展突飞猛进,政府积极扶植eda产业,加大招商引资力度,大力建设eda制造业基地,国务院颁布的软件产业和集成电路产业发展的若干政策从政策上为eda的发展营造了良好的外部环境,同时世界领先的一些供应商也看好中国市场的潜在优势,向中国出口先进的设计工具,但具备了工具只是解决了设计手段,而中国的设计师在eda的总体应用能力方面与世界发达国家相比还存在一定的差距,突出表现为专业人才紧缺,缺乏成熟化的整合性集成设计环境,供应商技术服务支持不够,中国eda技术的现在和未来都应重视设计方法、工具和设计语言等方面的问题,从整体上看,中国市场对设计工具的需求已越来越与国际接轨,但是尽管中国eda设计领域中前端的设计相对成熟,但后端例如从网表到c++等的设计却面临着更大的挑战。无论是eda的使用还是eda工具本身,我国与先进国家相比都有很大差距。eda标准化工作在我国刚刚起步,我国有庞大的市场需求和快的增长速度,同时还有后发优势,这是我国eda发展的楔机。在eda标准化方面,目前主要应采用国际和国外先进标准,一方面引进和转化适用的标准,更重要的是加强转化后标准的宣传和推广,通过标准化工作促进我国eda及集成电路产业的发展。

我国如何应对eda技术的挑战

①充分发挥eda仿真技术在教学中的应用,培养更多适应新技术要求的人才。人才需求的变化,技术的发展之快更是需要教育工作者有着人才培养的超前意识。这一意识必须是科学的、崭新的、快速的、甚至是跳跃的。特别是人才的培养需要有掌握新技术的专业教师,还要有新技术的设备才能满足人才培养的要求。新技术、新设备的大量投入可能会影响到进入人才市场最前沿的机遇。这就需要我们思维创新,教学手段创新。作者认为学校实验教学就应该以eda仿真技术

为突破口,引入计算机辅助教学手段,从而加快高素质人才培养的速度,建立雄厚的eda技术人才基础。②以半导体的研究创新促进eda技术发展半导体工艺技术在过去5年中正以飞快的速度发展。硅的生产率每18个就会增加,而设计生产率仍旧严重滞后。自从半导体行业步入0.13μm时代以来,集成电路设计所面临的挑战已被多次提及,范围包括了数字和模拟电路领域。相关的内容包括:功率管理,功能验证,漏电流,对于超过1.5亿个晶体管的复杂设计管理,还有0.13μm以下的混合信号和数字设计等等。过去那些令人生畏的巨大挑战总会被解决,所以说没有人会怀疑半导体技术会适时而及时地找出解决所面临的挑战方案,来击败itrs的预言。但是,为了在设计效率和设计技术有效上取得长足进步和避免成本重复,eda产业应该支持相应的一整套标准,如设计工具的全球战略、可制造性设计、统计设计方法、低功率设计和系统级确认等。③开发实用性更强的eda软件在eda软件开发方面,目前主要集中在美国。但各国也正在努力开发相应的工具。日本、韩国都有asic设计工具,但不对外开放。中国华大集成电路设计中心,也提供ic设计软件,但性能不是很强。相信在不久的将来会有更多更好的功能强大、界面友好、使用方便的设计工具在各地开花并结果。④外设技术与eda工程相结合外设技术与eda工程相结合的市场前景看好,如组合超大屏幕的相关连接,多屏幕技术也有所发展。中国自1995年以来加速开发半导体产业,先后建立了几所设计中心,推动系列设计活动以应对亚太地区其它eda市场的竞争。在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。要大力推进制造业信息化,积极开展计算机辅助设计

(cad)、计算机辅助工程(cae)、计算机辅助工艺(capp)、计算机辅助制造(cam)、产品数据管理(pdm)、制造资源计划(mrpii)及企业资源管理(erp)等。有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。开展“数控化”工程和“数字化”工程。自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(m3c)结构。在asic和pld设计方面,向超高速、高密度、低功耗、低电压方面发展。

EDA大作业交通灯 EDA大作业简单交通灯篇五

实验一:

quartus ii 软件使用及组合电路设计仿真

实验目的:

学习quartus ii 软件的使用,掌握软件工程的建立,vhdl源文件的设计和波形仿真等基本内容。

实验内容:

1.四选一多路选择器的设计 基本功能及原理 :

选择器常用于信号的切换,四选一选择器常用于信号的切换,四选一选择器可以用于4路信号的切换。四选一选择器有四个输入端a,b,c,d,两个信号选择端s(0)和s(1)及一个信号输出端y。当s输入不同的选择信号时,就可以使a,b,c,d中某一个相应的输入信号与输出y端接通。

逻辑符号如下:

程序设计:

软件编译:

在编辑器中输入并保存了以上四选一选择器的vhdl源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。仿真分析:

仿真结果如下图所示

分析:

由仿真图可以得到以下结论:

当s=0(00)时y=a;当s=1(01)时y=b;当 s=2(10)时y=c;当s=3(11)时y=d。符合我们最开始设想的功能设计,这说明源程序正确。2.七段译码器程序设计 基本功能及原理:

七段译码器是用来显示数字的,7段数码是纯组合电路,通常的小规模专用ic,如74或4000系列的器件只能作十进制bcd码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用vhdl译码程序在fpga或cpld中实现。本项实验很容易实现这一目的。输出信号的7位分别接到数码管的7个段,本实验中用的数码管为共阳极的,接有低电平的段发亮。数码管的图形如下

七段译码器的逻辑符号:

程序设计:

软件编译:

在编辑器中输入并保存了以上七段译码器的vhdl源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件

。仿真分析:

仿真结果如下图所示:

分析: 由仿真的结果可以得到以下结论:

当a=0(0000)时led7=1000000 此时数码管显示0; 当a=1(0001)时led7=1111001 此时数码管显示1; 当a=2(0010)时led7=0100100 此时数码管显示2; 当 a=3(0011)时led7=0110000 此时数码管显示3; 当 a=4(0100)时led7=0011001 此时数码管显示4; 当 a=5(0101)时led7=0010010 此时数码管显示5; 当 a=6(0110)时led7=0000010 此时数码管显示6; 当 a=7(0111)时led7=1111000 此时数码管显示7; 当 a=8(1000)时led7=0000000 此时数码管显示8; 当a=9(1001)时led7=0010000 此时数码管显示9; 当a=10(1010)时led7=0001000 此时数码管显示a; 当a=11(1011)时led7=0000011 此时数码管显示b; 当 a=12(1100)时led7=1000110 此时数码管显示c; 当a=13(1101)时led7=0100001 此时数码管显示d; 当a=14(1110)时led7=0000110 此时数码管显示e; 当a=15(1111)时led7=0001110 此时数码管显示f;

这完全符合我们最开始的功能设计,所以可以说明源vhdl程序是正确的。

实验心得:

通过这次实验,我基本掌握了quartus ii软件的使用,也掌握了软件工程的建立,vhdl源文件的设计和波形仿真等基本内容。在实验中,我发现eda这门课十分有趣,从一个器件的功能设计到程序设计,再到编译成功,最后得到仿真的结果,这其中的每一步都需要认真分析,一遍又一遍的编译,修改。当然,中间出现过错误,但我依然不放弃,一点一点的修改,验证,最终终于出现了正确的仿真结果,虽然有一些毛刺,但是总的来说,不影响整体的结果。

实验二:计数器设计与显示

实验目的:

(1)熟悉利用quartus ii中的原理图输入法设计组合电路,掌握层次化的设计方法;

(2)学习计数器设计,多层次设计方法和总线数据输入方式的

仿真,并进行电路板下载演示验证。实验内容:

1.完成计数器设计

基本功能及原理:

本实验要设计一个含有异步清零和计数使能的4位二进制加减可控计数器,即有一个清零端和使能端,当清零端为1时异步清零,即所有输出值都为0,当使能端为0时,计数器停止工作,当使能端为1时,正常工作,由时钟控制。另外,还应该有一个控制端,当控制端为0时,进行减法运算,当控制端为1时,进行加法运算。输出端有输出值和进位端,当进行加法运算时,输出值递增,当减法运算时,输出值递减,同时进位端进行相应的变化。

4位二进制加减计数器的逻辑符号:

程序设计:

软件编译:

在编辑器中输入并保存了以上4位二进制加减计数器的vhdl源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。仿真分析: 仿真结果如下:

分析:

由仿真图可以得到以下结论:

当enable端为0时,所有数值都为0,当enable端为1时,计数器正常工作;当reset端为1时,异步清零,所有输出数值为0,当reset端为0时,正常工作;当updown端为0时,进行减法运算,当updown为1时,进行加法运算;另外,当程序进行减法运算时,出现借位时,co为1,其余为0,当进行加法运算时,出现进位时,co为1,其余为0。图中所有的功能与我们设计的完全一样,所以说明源程序正确。2.50m分频器的设计

基本功能及原理:

50m分频器的作用主要是控制后面的数码管显示的快慢。即一个模为50m的计数器,由时钟控制,分频器所有的端口基本和上述4位二进制加减计数器的端口一样,原理也基本相同。分频器的进位端(co)用来控制加减计数器的时钟,将两个器件连接起来。50m分频器的逻辑符号如下:

程序设计:

软件编译:

在编辑器中输入并保存了以上50m分频器的vhdl源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。仿真分析: 结果如下:

上图为仿真图的一部分,由于整个图太大,所以显示一部分即可,其余部分如图以上图规律一直递增,直到50m为止,然后再重复,如此循环。

上图是部分输出的显示,由于整个图太大,所以只显示部分,其余部分如图递增。

分析:

由仿真图可以看出,当reset为0,enable为1时(因为本实验中计数器的模值太大,为了尽可能多的观察出图形,可让reset一直为0,enable一直为1,即一直正常工作),输出值由0一直递增到50m,构成一个加法计数器,与我们设计的功能一致。3.七段译码器程序设计

基本功能及原理:

七段译码器是用来显示数字的,7段数码是纯组合电路,通常的小规模专用ic,如74或4000系列的器件只能作十进制bcd码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用vhdl译码程序在fpga或cpld中实现。本项实验很容易实现这一目的。输出信号的7位分别接到数码管的7个段,本实验中用的数码管为共阳极的,接有低电平的段发亮。

七段译码器的逻辑符号:

程序设计:

软件编译:

在编辑器中输入并保存了以上七段译码器的vhdl源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。仿真分析:

仿真结果如下图所示:

分析:具体分析与实验一中七段译码器的分析相同,在此不再赘述。计数器和译码器连接电路的顶层文件原理图:

原理图连接好之后就可以进行引脚的锁定,然后将整个程序下载到已经安装好的电路板上,即可进行仿真演示。

实验心得:

经过本次试验,我学到了很多。首先,我加强了对quartus ii软件的掌握;其次,我掌握了电路图的顶层文件原理图的连接,学会了如何把自己设计的程序正确的转化为器件,然后正确的连接起来,形成一个整体的功能器件;最后,我学会了如何安装以及如何正确的把完整的程序下载到电路板上,并进行演示验证。

实验三:大作业设计

(循环彩灯控制器)

实验目的:

综合应用数字电路的各种设计方法,完成一个较为复杂的电路设计。实验内容:

流水灯(循环彩灯)的设计 设计任务:

设计一个循环彩灯控制器,该控制器可控制10个发光二极管循环点亮,间隔点亮或者闪烁等花型。要求至少三种以上花型,并用按键控制花型之间的转换,用数码管显示花型的序号。基本原理:

该控制器由两部分组成,一部分是一个50m的分频器,其主要用来控制花色变化的快慢;另一部分是一个彩灯控制器,该彩灯控制器可由两个开关控制花型的序号,10个输出分别控制10个发光二极管的亮暗,当输出为1时,该发光二极管亮,输出为0时,该二极管灭。将分频器的co端用来控制彩灯控制器的时钟,将两个器件连接起来。1.分频器的设计

50m分频器与实验二中的分频器一样,这里不再赘述。2.彩灯控制器的设计 基本原理:

该彩灯控制器由时钟控制,reset异步清零,enable当做使能端,由两个开关do(0-1)来控制选择不同的花型,10个输出端lig(0-9)来控制10个led灯的亮灭。因为用了两个开关来控制花型,所以一共有4种花色。

彩灯控制器的逻辑符号:

程序设计:

3.七段译码器的设计

七段译码器是用来显示不同花型的序号的,其设计与实验一中的设计一样,这里不再赘述。循环彩灯控制器的原理图:

仿真波形如下: 第一种花型:

第二种花型:

第三种花型:

第四种花型:

仿真分析:

将以上仿真波形图和源程序对比,我们可以看到,仿真出来的波形和我们设计的功能一致,这说明源vhdl程序是正确的。实验心得:

本次试验是在没有老师指导的情况下自己完成的,我在参考了网上的程序的情况下,最终成功的设计并正确的演示出了循环彩灯的不同花型。通过本次试验,我真正的体会到了dea这门课的乐趣,也发现它对我们的学习和生活带来很大的方便。