人人范文网 实习报告

eda实习报告(精选多篇)

发布时间:2020-11-24 08:37:38 来源:实习报告 收藏本文 下载本文 手机版

推荐第1篇:EDA实习报告

EDA实验报告

系别:

班级:

姓名:

学号:

目录

1.EDA介绍

2.Quartus II软件介绍

3.实习任务

4.封装引脚图

5.设计程序

6.结果显示

7.实习心得

1.EDA介绍

EDA是电子设计自动化(Electronic Design Automation)缩写。EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。 硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL[1]。

几乎所有适于大学生做的数字逻辑电路实验都可以在计算机上利用EDA (Electronic Design Automatic—电子设计自动化)软件进行设计、仿真,只有极少量外部配件不能在计算机上进行仿真。因此,在实验前期阶段,即实验预习阶段的主要应用工具是EDA软件,利用EDA软件可以设计、仿真实验课题,进行虚拟实验。通过虚拟实验使实验者在进入真实实验前就能对预做的实验有相当的了解,甚至可以预测到实验的结果。这样在实际做实验时,可以把许多设计型实验的难度降低,同时能有更多的时间让实验者动手做实验,研究问题,提高实验效率。当前数字电路设计已由计算机辅助设计进入到以计算机为主的设计时代。

2.Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。

此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。

3.1 设计信号发生器使其能在仪器上显示正弦、三角、方波、锯齿波(其中的两种波形)

2设计频率计使其能测出制定波形的频率

4.波形发生器封装引脚图

5.波形发生器程序(正弦波,方波)

Boxing4

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY boxing4 IS PORT (

RIN:in std_logic;

clk: IN std_logic; SINT:in std_logic_VECTOR(1 downto 0); --set:in std_logic;--_vector;--( 1 downto 0 ); rs,rw,en,lcdon,lcdbon : OUT STD_LOGIC; YOUT:out std_logic_vector(7 downto 0); data : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END boxing4; ARCHITECTURE fwm OF boxing4 IS

TYPE states IS (clear_display,set_initial,set_cgram,write_cgram,set_addram1,diaplay_cgram,set_addram2,diaplay_cgrom); --clear_display-清屏;--set_initial-初始化设置;--set_cgram-设置 cgram 地址;--write_cgram-字模写入 cgram; --set_addram1-设置显示 cgram 字符的 addram 地址;--diaplay_cgram-显示 cgram 字符; --set_addram2-设置显示 cgrom 字符的 addram 地址;--diaplay_cgrom-显示 cgrom 字符 SIGNAL state:states; TYPE ram_array0 IS ARRAY(0 TO 7) OF STD_LOGIC_VECTOR(7 DOWNTO 0);--定义 ram_array0 为二维数组

TYPE ram_array1 IS ARRAY(0 TO 7) OF ram_array0;--定义 ram_array1 为三维数组 SIGNAL lcd_clk : STD_LOGIC; SIGNAL data1,data2,data3:INTEGER RANGE 0 TO 9; --signal n:std_logic; SIGNAL net1,net2:std_logic_vector(7 downto 0);--signal net3:std_logic;

COMPONENT choice4_1

PORT(s:in std_logic_vector(1 downto 0);

d1,d2: in std_logic_vector(7 downto 0);

y: out std_logic_vector(7 downto 0)); END COMPONENT; COMPONENT fangbo PORT(clkf,rf:in std_logic;

qf:out std_logic_vector(7 downto 0)

); END COMPONENT; COMPONENT sin PORT(clksin,rsin:in std_logic;

da:out std_logic_vector(7 downto 0)); END COMPONENT; BEGIN u1: fangbo PORT MAP(clkf=>CLK,rf=>RIN,qf=>net1); u2: sin PORT MAP(clksin=>CLK,rsin=>RIN,da=>net2); u3: choice4_1 PORT MAP(s=>SINT,d1=>net1,d2=>net2,y=>YOUT); en

PROCESS(clk)

CONSTANT m : INTEGER:=50000;--50M 分频到 1kHz。

VARIABLE cout : INTEGER RANGE 0 TO 50000000:=0; BEGIN

IF clk\'EVENT AND clk=\'0\' THEN cout:=cout+1;

IF cout

ELSIF cout

ELSE cout:=0;

END IF;

END IF;

END PROCESS;

PROCESS(lcd_clk) CONSTANT cgram : ram_array1:=(--自定义 8 个 5*8 字符的字模 (X\"00\",X\"0E\",X\"00\",X\"0E\",X\"00\",X\"1F\",X\"00\",X\"00\"),--SAN (X\"04\",X\"1F\",X\"04\",X\"07\",X\"05\",X\"09\",X\"13\",X\"01\"),--FANG (X\"00\",X\"1f\",X\"04\",X\"04\",X\"17\",X\"14\",X\"14\",X\"1f\"),--ZHENG (X\"0E\",X\"02\",X\"0E\",X\"08\",X\"08\",X\"0e\",X\"02\",X\"0e\"),--ZUO XIAN (X\"04\",X\"1E\",X\"04\",X\"08\",X\"1e\",X\"04\",X\"09\",X\"1f\"),--YOU XIAN (X\"00\",X\"13\",X\"0A\",X\"03\",X\"1a\",X\"02\",X\"0a\",X\"13\"),--ZUO BO (X\"08\",X\"1F\",X\"09\",X\"1E\",X\"14\",X\"08\",X\"14\",X\"03\"),--YOU BO (X\"18\",X\"18\",X\"07\",X\"08\",X\"08\",X\"08\",X\"07\",X\"00\")--℃字符数据存储器 );

VARIABLE datacnt:INTEGER RANGE 0 TO 15;

VARIABLE cnt: STD_LOGIC_VECTOR(7 DOWNTO 0);

VARIABLE num:INTEGER RANGE 0 TO 7; BEGIN --wait until net3=\'0\';RISING_EDGE(lcd_clk);

IF RISING_EDGE(lcd_clk) THEN

--if sint=\"00\"then

case sint is

when \"11\"=>

CASE state IS

WHEN clear_display=>rs

WHEN set_initial=>

IF datacnt

ELSIF datacnt=3 THEN rs

ELSIF datacnt=4 THEN rs

ELSE rs

END IF;

WHEN set_cgram=>rs

data

IF num

END IF;

WHEN write_cgram=>rs

data

IF datacnt=8 THEN num:=num+1;datacnt:=0;state

IF num =7 THEN num:=0;cnt:=\"00000000\";state

END IF;

END IF;

WHEN set_addram1=>rs

data

WHEN diaplay_cgram=>rs

-- if sint=\"00\"then

IF datacnt=0 THEN data

ELSIF datacnt=1 THEN data

ELSIF datacnt=2 THEN data

ELSIF datacnt=3 THEN data

ELSIF datacnt=4 THEN data

ELSIF datacnt=5 THEN data

ELSIF datacnt=6 THEN data

ELSIF datacnt=7 THEN data

ELSIF datacnt=8 THEN data

ELSIF datacnt=9 THEN data

ELSIF datacnt=10 THEN data

ELSIF datacnt=11 THEN data

ELSIF datacnt=12 THEN data

ELSIF datacnt=13 THEN data

ELSIF datacnt=14 THEN data

ELSE data

END IF;

WHEN set_addram2=>rs

data

WHEN diaplay_cgrom=>rs

IF datacnt=0 THEN data

ELSIF datacnt=1 THEN data

ELSIF datacnt=2 THEN data

ELSIF datacnt=3 THEN data

ELSIF datacnt=4 THEN data

ELSIF datacnt=5 THEN data

ELSIF datacnt=6 THEN data

ELSIF datacnt=7 THEN data

ELSIF datacnt=8 THEN data

ELSIF datacnt=9 THEN data

ELSIF datacnt=10 THEN data

ELSIF datacnt=11 THEN data

ELSIF datacnt=12 THEN data

ELSIF datacnt=13 THEN data

ELSIF datacnt=14 THEN data

ELSE data

END IF;

END CASE;

--end if;

when \"01\"=>

-- elsif sint =\"01\"then

CASE state IS

WHEN clear_display=>rs

WHEN set_initial=>

IF datacnt

ELSIF datacnt=3 THEN rs

ELSIF datacnt=4 THEN rs

ELSE rs

END IF;

WHEN set_cgram=>rs

data

IF num

END IF;

WHEN write_cgram=>rs

data

IF datacnt=8 THEN num:=num+1;datacnt:=0;state

IF num =7 THEN num:=0;cnt:=\"00000000\";state

END IF;

END IF;

WHEN set_addram1=>rs

data

WHEN diaplay_cgram=>rs

-- if sint=\"00\"then

IF datacnt=0 THEN data

ELSIF datacnt=1 THEN data

ELSIF datacnt=2 THEN data

ELSIF datacnt=3 THEN data

ELSIF datacnt=4 THEN data

ELSIF datacnt=5 THEN data

ELSIF datacnt=6 THEN data

ELSIF datacnt=7 THEN data

ELSIF datacnt=8 THEN data

ELSIF datacnt=9 THEN data

ELSIF datacnt=10 THEN data

ELSIF datacnt=11 THEN data

ELSIF datacnt=12 THEN data

ELSIF datacnt=13 THEN data

ELSIF datacnt=14 THEN data

ELSE data

END IF;

WHEN set_addram2=>rs

data

WHEN diaplay_cgrom=>rs

IF datacnt=0 THEN data

ELSIF datacnt=1 THEN data

ELSIF datacnt=2 THEN data

ELSIF datacnt=3 THEN data

ELSIF datacnt=4 THEN data

ELSIF datacnt=5 THEN data

ELSIF datacnt=6 THEN data

ELSIF datacnt=7 THEN data

ELSIF datacnt=8 THEN data

ELSIF datacnt=9 THEN data

ELSIF datacnt=10 THEN data

ELSIF datacnt=11 THEN data

ELSIF datacnt=12 THEN data

ELSIF datacnt=13 THEN data

ELSIF datacnt=14 THEN data

ELSE data

END IF;

END CASE;

--end if;

when others =>null;

end case;

END IF; end proce; END fwm;

Choice4-1

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

--程序包 entity choice4_1 is

--定义实体 port(s:in std_logic_vector(1 downto 0);

--信号选择端口s d1,d2: in std_logic_vector(7 downto 0); --d1d2d3d4分别连接四个波形发生模块

y: out std_logic_vector(7 downto 0)); --定义输出信号端口 end choice4_1; architecture behav of choice4_1 is

--结构体 begin

proce(s)

begin

case s is

--case when语句进行信号位的选择

when \"01\"=>y

when \"11\"=>y

when others=>null;

end case; end proce;

--进程结束 end behav;

--结构体结束

fangbo

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity fangbo is port(clkf,rf:in std_logic; qf:out std_logic_vector(7 downto 0) ); end entity; architecture behav of fangbo is signal a:bit; begin proce(clkf,rf) --计数分频

variable cnt:integer range 0 to 256; begin if(rf=\'0\') then a

qf

sin

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity sin is port(clksin,rsin:in std_logic; da:out BIT_vector(7 downto 0)); end entity; architecture behav of sin is signal a:bit; begin proce(clksin,rsin) --计数分频 variable cnt:integer range 0 to 256; begin if(rsin=\'0\') then a

variable tmp:std_logic_vector(7 downto 0); variable d:BIT_vector(7 downto 0); begin --if a=\'0\' then --d:=\"00000000\"; --elsif clksin\'event and clksin=\'1\' then if a\'event and a=\'1\' then if tmp=\"00111111\" then tmp:=\"00000000\"; else tmp:=tmp+1; end if; case tmp is when \"00000000\"=>d:=\"11111111\"; when \"00000001\"=>d:=\"11111110\"; when \"00000010\"=>d:=\"11111100\"; when \"00000011\"=>d:=\"11111001\"; when \"00000100\"=>d:=\"11110101\"; when \"00000101\"=>d:=\"11101111\"; when \"00000110\"=>d:=\"11101001\"; when \"00000111\"=>d:=\"11100001\"; when \"00001000\"=>d:=\"11011001\"; when \"00001001\"=>d:=\"11001111\"; when \"00001010\"=>d:=\"11000101\"; when \"00001011\"=>d:=\"10111010\"; when \"00001100\"=>d:=\"10101110\"; when \"00001101\"=>d:=\"10100010\"; when \"00001110\"=>d:=\"10010110\"; when \"00001111\"=>d:=\"10001010\"; when \"00010000\"=>d:=\"01111100\"; when \"00010001\"=>d:=\"01100000\"; when \"00010010\"=>d:=\"01100011\"; when \"00010011\"=>d:=\"01010111\"; when \"00010100\"=>d:=\"01001011\"; when \"00010101\"=>d:=\"01000000\"; when \"00010110\"=>d:=\"00110101\"; when \"00010111\"=>d:=\"00101011\"; when \"00011000\"=>d:=\"00100010\"; when \"00011001\"=>d:=\"00011010\"; when \"00011010\"=>d:=\"00010011\"; when \"00011011\"=>d:=\"00001101\"; when \"00011100\"=>d:=\"00001000\"; when \"00011101\"=>d:=\"00000001\"; when \"00011110\"=>d:=\"00000001\"; when \"00011111\"=>d:=\"00000000\"; when \"00100000\"=>d:=\"00000000\"; when \"00100001\"=>d:=\"00000001\"; when \"00100010\"=>d:=\"00000001\"; when \"00100011\"=>d:=\"00001000\"; when \"00100100\"=>d:=\"00001101\"; when \"00100101\"=>d:=\"00010011\"; when \"00100110\"=>d:=\"00011010\"; when \"00100111\"=>d:=\"00100010\"; when \"00101000\"=>d:=\"00101011\"; when \"00101001\"=>d:=\"00110101\"; when \"00101010\"=>d:=\"01000000\"; when \"00101011\"=>d:=\"01001011\"; when \"00101100\"=>d:=\"01010111\"; when \"00101101\"=>d:=\"01100011\"; when \"00101110\"=>d:=\"01100000\"; when \"00101111\"=>d:=\"01111100\"; when \"00110000\"=>d:=\"10001001\"; when \"00110001\"=>d:=\"10010110\"; when \"00110010\"=>d:=\"10100010\"; when \"00110011\"=>d:=\"10101110\"; when \"00110100\"=>d:=\"10111010\"; when \"00110101\"=>d:=\"11000101\"; when \"00110110\"=>d:=\"11011001\"; when \"00110111\"=>d:=\"11011001\"; when \"00111000\"=>d:=\"11100001\"; when \"00111001\"=>d:=\"11101001\"; when \"00111010\"=>d:=\"11101111\"; when \"00111011\"=>d:=\"11110101\"; when \"00111100\"=>d:=\"11111001\"; when \"00111101\"=>d:=\"11111100\"; when \"00111110\"=>d:=\"11111110\"; when \"00111111\"=>d:=\"11111111\"; when others=>null; end case; end if; da

频率计

1、频率产生器: library ieee; use ieee.std_logic_1164.all; library lpm; use lpm.lpm_components.all; entity lpm_counter0 is port(clock: in std_logic ; q: out std_logic_vector (26 downto 0)); end lpm_counter0; architecture syn of lpm_counter0 is signal sub_wire0 : std_logic_vector (26 downto 0); component lpm_counter generic (

lpm_direction : string;

lpm_port_updown : string; lpm_type : string; lpm_width : natural ); port(clock : in std_logic ;

q : out std_logic_vector (26 downto 0)); end component; begin q

lpm_direction =>\"up\",

lpm_port_updown =>\"port_unused\",

lpm_type =>\"lpm_counter\",

lpm_width =>27 ) port map (

clock =>clock,

q =>sub_wire0 ); end syn;

2、测频控制信号发生器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity testpl is port(clk:in std_logic;--1Hz信号

tsten:out std_logic;--计数器使能信号 clr_cnt:out std_logic;--计数器清零信号 load:out std_logic);--锁存器输出控制信号 end testpl; architecture art of testpl is signal div2clk:std_logic; begin proce(clk) begin if clk\'event and clk=\'1\'then div2clk

3、有时钟使能的十进制计数器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt10 is port(clk,clr,en: in std_logic; --clk:计数器时钟,clr:清零信号,en:计数使能信号

q: out std_logic_vector(3 downto 0);--q:4位计数结果输出 c10: out std_logic);--计数进位 end cnt10; architecture art of cnt10 is signal cqi: std_logic_vector(3 downto 0); begin proce (clk,clr) begin if clr=\'1\' then cqi

proce(cqi) begin if cqi=\"1001\" then c10

4、16位锁存器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity reg16b is port (load: in std_logic;--输出锁存控制信号 din: in std_logic_vector(15 downto 0); dout: out std_logic_vector(15 downto 0)); end reg16b; architecture art of reg16b is begin proce(load,din) begin if load\'event and load=\'1\'then --load为高电平时teten为低电平,计数器禁止 dout

5、数码管控制器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ledcom is port(clk:in std_logic; --数码管扫描频率

datain: in std_logic_vector(15 downto 0);--锁存器输入的16位信号 dataout: out std_logic_vector(3 downto 0);-输出至译码器的4位信号 com: out std_logic_vector(3 downto 0));--输出数码管选择信号 end ledcom; architecture art of ledcom is signal comclk: std_logic_vector(1 downto 0); begin --comclk同扫描频率clk循环变化 proce(clk) begin if rising_edge(clk) then if comclk>=3 then

comclk

else comclk

proce(comclk) begin case comclk is when \"00\" =>com com com comNULL; end case; end proce; --对应数码管的输出

proce(comclk,datain) begin case comclk is when \"11\"=>dataout dataout dataout dataoutNULL; end case; end proce; end art;

6、七段数码管的译码器 library IEEE; use IEEE.std_logic_1164.all; entity ymq is port( d_in: in std_logic_vector(3 downto 0); --数码管控制器输入四位信号

d_out: out std_logic_vector(7 downto 0)); --输出8位信号 end ymq; --第8位d_out[7]为逗号 architecture art of ymq is begin proce(d_in) begin case d_in is --第8位为1高电平逗号不显示 when \"0000\" =>d_out d_out d_out d_out d_out d_out d_out d_out d_out d_outNULL; end case; end proce; end art;

7、元件声明及例化将各个元器件依据设计相连 library ieee; use ieee.std_logic_1164.all; entity lx is port(clk: in std_logic; led: out std_logic_vector(7 downto 0); ledc: out std_logic_vector(3 downto 0)); end lx; architecture art of lx is component lpm_counter0 --待调用的频率生成器端口定义 PORT (clock: IN STD_LOGIC ; q: OUT STD_LOGIC_VECTOR (26 DOWNTO 0) ); end component; --十进制计数器

component cnt10 --待调用的有时钟使能的十进制计数器端口定义

port(clk,clr,en: in std_logic; q: out std_logic_vector(3 downto 0); c10: out std_logic); end component; --16位锁存器

component reg16b --待调用的32位锁存器端口定义 port (load: in std_logic; din: in std_logic_vector(15 downto 0); dout: out std_logic_vector(15 downto 0)); end component; --测频控制器

component testpl --待调用的测频控制信号发生器端口定义 port(clk:in std_logic; tsten:out std_logic; clr_cnt:out std_logic; load:out std_logic); end component; --数码管选择器

component ledcom --待调用的数码管选择器端口定义 port(clk:in std_logic; datain: in std_logic_vector(15 downto 0); dataout: out std_logic_vector(3 downto 0); com: out std_logic_vector(3 downto 0)); end component; --译码器

component ymq --待调用的译码器端口定义 port(d_in: in std_logic_vector(3 downto 0); d_out: out std_logic_vector(7 downto 0)); end component; signal clk1,clk2,clk3: std_logic;--clk1为1Hz信号,clk2为被测信号,clk3为数码管扫描信号

signal tsten,clr,load: std_logic; signal c1,c2,c3,c4: std_logic; signal qout,rout: std_logic_vector(15 downto 0); signal datao: std_logic_vector(3 downto 0); begin u0:testpl port map(clk1,tsten,clr,load); u1:cnt10 port map(clk2,clr,tsten,qout(3 downto 0),c1); u2:cnt10 port map(c1,clr,tsten,qout(7 downto 4),c2); u3:cnt10 port map(c2,clr,tsten,qout(11 downto 8),c3); u4:cnt10 port map(c3,clr,tsten,qout(15 downto 12),c4); u5:reg16b port map(load,qout(15 downto 0),rout); u6:ledcom port map(clk3,rout,datao,ledc); u8:ymq port map(datao,led); u9:lpm_counter0 port map(clk,q(25)=>clk1,q(15)=>clk2,q(17)=>clk3); end art;

6.结果显示

7.实习心得

推荐第2篇:EDA实习报告

贵州师范大学学生

实习报告

科目:EDA实习

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

姓名: 李启应

学号: 101401010202

实验项目名称:数字电子钟的设计 实验项目性质:普通试验 所属课程名称:VHDL程序设计

一、实验目的

1 学习VHDL语言的一些基本特点。 2 掌握VHDL程序的基本结构。 3掌握VHDL程序设计方法。

4 要能够用vhdl语言读懂并编写eda程序,对eda设计的总体框架能有较好的把握,掌握各模块的调用方式。

二、实验内容和要求

设计一个数字时钟,显示时(2位),分(2位),秒(2位),具体要求是:具有时分秒计数显示功能,以24小时循环计时;数码管动态显示时,分,秒;具有清零功能。

在软件工具平台上,进行VHDL语言的各模块编程输入、编译实现和仿真验证。

三、实验主要仪器设备和材料

计算机,开发环境MAX-PLUSII,ZY11EDA实验系统,VHDL语言。

四、实验方法、步骤及结果测试

1、设计思路:

数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分位60进制计数器,小时为24进制计数器,分别产生3位BCD码。BCD码经译码,驱动后接数码显示电路。

根据实验要求,将设计分为5个主要部分,时功能模块、分功能模块、秒功能模块、扫描仪功能模块和7段LED功能模块。 在时、分、秒模块中,包括复位和预置数,其主要思路如下:

秒钟的模块:设计一个60进制的计数器,以clk为其时钟信号,每60个clk后产

1 生一个进位信号CF给分钟模块,作为分钟进程的响应信号。 秒钟模块VHDL程序见附录1: 仿真波形如下:

封装如下图:

分钟的模块:同理于秒钟的模块,设计一个60进制的计数器,以CFM为其时钟信号,每60个CFM后产生一个进位信号CFM给小时模块,作为小时模块进程的响应信号。 分钟模块VHDL程序见附录二: 仿真波形如下:

封装如下图:

小时的模块:为24进制计数器,在分的进位信号CFM的激发下计数,从0到23的时候产生一个信号CFH,全部清0,重新开始计时。 小时模块VHDL程序见附录三: 仿真波形如下:

封装如下图:

扫描仪模块:在扫描仪内部,有一个3-8译码器的片选信号,当3-8译码器的片选信号为000时,片选信号选中7段LED模块中的秒的个位,当3-8译码器的片选信号为001时,片选信号选中7段LED模块中的秒的十位,当3-8译码器的片选信号为010时,片选信号选中7段LED模块中的分的个位,当3-8译码器的片选信号为011时,片选信号选中7段LED模块中的分的十位,当3-8译码器的片选信号为100时,片选信号选中7段LED模块中的时的个位,当3-8译码器的片选信号为101时,片选信号选中7段LED模块中的时的十位,就这样动态扫描,当输入的时钟信号频率很高的时候,就形成了我们的时钟。

扫描仪模块VHDL程序见附录四: 仿真波形如下:

封装如下图:

7段LED模块:根据动态扫描仪的片选信号来依次点亮我们所需的时间。 7段LED模块VHDL程序见附录五: 仿真波形如下:

封装如下图:

5 综合以上5大模块,把它们用线连接起来就得到我们的总的电路图:如下图所示: 其工作原理为:扫描仪3-8译码器的片选信号根据时分秒的输入选中7段LED模块,然后再由时分秒中产生的3位BCD码来输出秒的个位,十位、时的个位,十位、小时的个位,十位。

4.总结:

在实验这两周的时间里,我们做过DC触发器、DQ触发器、3-8译码器、二选一电路和四选一电路等,最后综合做了数字时钟电路,通过这次实习,我对用VHDL来编程有了更深的了解,在要编程的时候,我学会了分模块进行,因为一开始的时候设计一个时钟系统比较麻烦,没有分模块之前总是会有差错,而之后思路就会比较清晰,有明确的方案,在对照书本里的编程规则与语句,就完成了这次的设计,总之就是获益良多。

6 附录1:秒钟模块VHDL程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity second is port(clk,reset:in std_logic; cf:out std_logic; second1_out:out std_logic_vector(3 downto 0); second10_out:out std_logic_vector(2 downto 0)); end entity second; architecture one of second is signal second1n:std_logic_vector(3 downto 0); signal second10n:std_logic_vector(2 downto 0); begin second1_out

8 附录二:分钟模块VHDL程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity minute is port(clk,reset:in std_logic; cf:out std_logic; minute1_out:out std_logic_vector(3 downto 0); minute10_out:out std_logic_vector(2 downto 0)); end entity minute; architecture one of minute is signal minute1n:std_logic_vector(3 downto 0); signal minute10n:std_logic_vector(2 downto 0); begin minute1_out

9 minute1n

10 附录三:小时模块VHDL程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity hour is port(clk,reset:in std_logic; hour1_out:out std_logic_vector(3 downto 0); hour10_out:out std_logic_vector(1 downto 0)); end entity hour; architecture one of hour is signal hour1n:std_logic_vector(3 downto 0); signal hour10n:std_logic_vector(1 downto 0); begin hour1_out

11 if(hour10n="10")then hour10n

12 附录四:扫描仪模块VHDL程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity saomiaoyi is port(clk:in std_logic; reset:in std_logic; second1,minute1,hour1:in std_logic_vector(3 downto 0); second_10,minute_10:in std_logic_vector(2 downto 0); hour_10:in std_logic_vector(1 downto 0); dataout:out std_logic_vector(3 downto 0); sel:out std_logic_vector(2 downto 0)); end entity saomiaoyi; architecture one of saomiaoyi is signal count:std_logic_vector(2 downto 0); begin sel

13 if count>="101" then countdataoutdataoutdataoutdataoutdataoutdataout

附录五:7段LED模块VHDL程序 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY led_7 IS

14 PORT ( A:IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END entity led_7; ARCHITECTURE one OF led_7 IS BEGIN PROCESS( A ) BEGIN CASE A(3 DOWNTO 0) IS WHEN "0000" =>LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ; END CASE ; END PROCESS ; END ARCHITECTURE one;

推荐第3篇:EDA实习报告

电子设计自动化技术EDA实习报告

目录

引 言

(1)EDA简介

(2)EDA的设计流程 第一章

实训目的

第二章 实训内容

一、EDA 开发软件Max+plus II 或Quartus II

1.1基本原理

1.2条件要求

1.3主要内容

1.4实践步骤与结果分析

(一)设计原理图或VHDL源程序

1) 原理图

2)VHDL源程序

(二)器件及管脚逻分配图

1)调试编译与仿真波形

2)时序分析图

1.5项目一的结论

二、4位全加器设计

2.1基本原理

2.2条件要求

2.3主要内容

2.4方案及实现方法

2.5实践步骤与结果分析

(一)设计1 位全加器

1) 1 位全加器原理图

2)1位全加器仿真波形

(二)四位全加器设计

1)四位全加器原理图

2)器件及管脚逻分配图

3)调试编译与仿真波形

4)时序分析图

(三)项目二的结论

三、8 线-3 线优先编码器

3.1基本原理

1、管脚

2、真值表

3.2条件要求

3.3主要内容

3.4方案及实现方法

3.5实践步骤与结果分析

(一)原理图和VHDL程序

203130705岳慧慧

电子设计自动化技术EDA实习报告

1) 3-8译码器的原理图

2)VHDL程序

(二)器件及管脚逻分配图

(三)调试编译与仿真波形

1、调试编译

2、仿真波形

(四)时序分析图

(五)项目三的结论

四、10 进制计数器设计

4.1基本原理

1、管脚

2、真值表

4.2条件要求

4.3主要内容

4.4方案及实现方法

4.5实践步骤与结果分析

(一)原理图和VHDL程序

1) 10 进制计数器

2)VHDL程序

(二)器件及管脚逻分配图

(三)调试编译与仿真波形

1、调试编译

2、仿真波形

(四)时序分析图

(五)项目四的结论

五、8 位循环移位寄存器

5.1基本原理

1、管脚

2、真值表

5.2条件要求

5.3主要内容

5.4方案及实现方法

5.5实践步骤与结果分析

(一)原理图和VHDL程序

1) 8 位循环移位寄存器

2)VHDL程序

(二)器件及管脚逻分配图

(三)调试编译与仿真波形

1、调试编译

2、仿真波形

(四)时序分析图

(五)项目三的结论

第三章 结 论

203130705岳慧慧

电子设计自动化技术EDA实习报告

(1)EDA简介

电子技术的迅猛发展,高新技术日新月异。传统的电子技术设计方法,以不能帮助我们更好的、高效的完成设计任务。所以我们需要更好的工具来帮助我们完成设计任务。

EDA技术是指以计算机为工作平台,融合应用电子技术、计算机技术、信息处理及智能化技术,进行电子产品自动化设计的一门新技术。

EDA技术作为现代电子设计技术的核心,依赖于计算机,在EDA工具软件平台上,对以硬件描述语言为逻辑描述手段完成设计文件,自动地完成逻辑编译、逻辑化简、逻辑综合、布局布线,以及逻辑优化和仿真测试,直至实现既定的电子电路的功能。

在硬件方面,EDA技术融合了大规模集成电路制造技术、集成电路板图设计技术、可编程器件编程技术、自动测试技术等;在计算机辅助工程方面融合了计算机辅助设计、计算机辅助制造、计算机辅助测试、计算机辅助分析、计算机辅助工程技术以及多种计算机语言的设计概念;在现代电子学方面容纳了诸如计算机设计技术、电子线路设计理论、数字信息处理技术、数字系统建模和优化技术以及基于微波技术的长线技术理论。

可以说,EDA技术打破了软件设计和硬件设计间的壁垒,是一门综合性学科,一种多方位技能技术。它将设计效率和产品性能合二为一,代表了电子设计技术和电子应用技术的发展方向 。

(2)EDA的设计流程

编辑输入

1) 文本输入。在EDA工具软件的文本编辑见面上,输入用某种硬件语言表

述的电路设计文本。

2) 原理图输入。在EDA工具软件的图形编辑界面上,绘制能完成预定功能的电路原理图。

3) 状态图输入。依据电路的控制条件和状态转换的因果关系,在EDA工具软件的状态图编辑界面上绘制时序电路的状态流程图。

 波形图输入

在EDA工具软件的波形图编辑界面上,绘制电路输入输出信号间的波形关系,然后由EDA编译器据此完成电路设计。

综合

综合是将由硬件描述语言表述的电路行为表述转换为低级的、与可编程逻辑器件基本结构相映射的网表文件或电路连接图。

适配

适配是为了将综合器产生的网表文件装配于指定的目标器中,而产生最终的编程文件。

 功能仿真与时序仿真

1) 功能仿真是指针对文本设计、原理图设计及其它设计方法的逻辑功能进 2) 行测试模拟,以便了解所设计电路实现的功能是否符合要求。

3) 时序仿真的结果接近真实器件的运行特性。

编程下载

把适配后生成的编程文件通过编程器或编程电缆载入目标可编程逻辑器件,以便进行硬件验证。

 硬件测试

对含有载入了编程文件的可编程逻辑器件的硬件系统进行统一的测试。

203130705岳慧慧

电子设计自动化技术EDA实习报告

第一章 实训目的

1) 掌握MAX+PLUSⅡ或Quartus II 的安装与使用方法,EDA 的开发流程及相关分析综合方法。 2) 复习加法器的原理,掌握加法器的设计实现方法,设计实现数字系统设计中常用的4位全加器,在此基础上进一步熟悉MAX+PLUSⅡ或Quartus II 软件的使用方法,熟练掌握EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。

3) 复习编码器的原理,掌握编码器的设计实现方法,设计实现数字系统设计中常用的8线-3 线优先编码器,逐步学会熟练运用MAX+PLUSⅡ或Quartus II 软件,熟悉EDA 的VHDL程序设计方法、学习掌握组合逻辑电路的VHDL 描述方法,进一步掌握应用EDA 常用工具进行组合逻辑电路的设计、分析、综合、仿真等的技巧。

4) 复习计数器的原理,掌握计数器的设计实现方法,设计实现数字系统设计中常用的10进制计数器,逐步学会熟练运用MAX+PLUSⅡ或Quartus II 软件,熟悉EDA 的VHDL 程序设计方法、学会使用信号升沿、降沿、VHDL 的敏感量表等内容,掌握时序逻辑电路的VHDL描述方法,步掌握应用EDA 常用工具软件进行时序逻辑电路的设计、分析、综合、仿真等的方法与技巧。

5) 复习循环移位寄存器的原理与功能,学习掌握循环移位寄存器的设计实现方法,设计实现数字系统设计中常用的8 位循环移位寄存器,逐步学会熟练运用MAX+PLUSⅡ或QuartusII 软件,熟悉EDA 的VHDL 程序设计方法、学会使用信号升沿、降沿、VHDL 的敏感量表等内容,掌握时序逻辑电路的VHDL 描述方法,掌握应用EDA 常用工具软件进行时序逻辑电路的设计、分析、综合、仿真等的方法与技巧。

6) 初步掌握VHDL语言和原理图的设计输入,编译,仿真和调试过程,理解VHDL语言的基本特点包括结构、语法、数据类型等。

第二章 实训内容

一、EDA 开发软件Max+plus II 或Quartus II 1.1基本原理

根据EDA 的设计流程:设计输入→编译→器件选择→管脚分配→设计仿真→时序分析→编程下载,在熟悉EDA 开发软件Max+plus II 或Quartus II 界面操作基础上,使用软件提供的编辑、编译、仿真等工具,分析所设计的系统。

1.2条件要求

1) 计算机及操作系统

2) MAX+Plus II 或Quartus II 软件 3) 编程电缆(可选)

1.3主要内容

1.设计输入方法,包括图形输入、文本输入等 2.设计编译

3.器件选择及管脚分配 4.设计仿真 5.时序分析 6.编程下载

1.4实践步骤与结果分析

(一)设计原理图或VHDL源程序

203130705岳慧慧

电子设计自动化技术EDA实习报告

1) 原理图

我设计了一个半加器,A和B是输入端,C是进位输出,D是加法输出

以上为采用图形输入法完成的一个二输入半加器电路 2)VHDL源程序

O

(二)器件及管脚逻分配图203130705岳慧慧 5

电子设计自动化技术EDA实习报告

与门的两个输入A 和B 分配给管脚3 与2,输出C分配给管脚44,输出O分配给管脚43,所选器件为EPM3032ALC44-4。

(三)调试编译与仿真波形 1)调试编译

203130705岳慧慧 6

电子设计自动化技术EDA实习报告

编译结果正确,无错误,但是有一个警告。

2)仿真波形

此处,我设计A输入信号为100ns/每格的时钟脉冲,B输入信号为300ns/每格的时钟脉冲。

仿真波形如下图所示:

从仿真波形可以看出,输入输出结果满足表达式O=A XOR B、C=A AND B,亦即所设203130705岳慧慧

电子设计自动化技术EDA实习报告

计电路功能达到设计要求。

(四)时序分析图

此处,我进行Claic Timing Analyzer 时序分析,可以得到A、B、C、D四个波形的信号到达时间都是3.5ns,所以仿真波形图上不存在毛刺,很完美。

1.5项目一的结论

我掌握了MAX+PLUSⅡ或Quartus II 的安装与使用方法,EDA 的开发流程及相关分析综合方法,在此基础上进一步熟悉MAX+PLUSⅡ或Quartus II 软件的使用方法,熟练掌握EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。同时复习加法器的原理,掌握加法器的设计实现方法,我完成的主要工作是设计了数字系统设计中常用的一个半加器。A和B是半加器输入,C是半加器的进位输出,D是A加B的结果输出,并且利用波形仿真验证VHDL程序和原理图的正确性。得出的结论是根据波形图结果,波形符合逻辑关系,无毛刺,十分完美地实现二输入半加器。

二、4位全加器设计

2.1基本原理

4 位全加器的管脚如下图所示:

其中CIN 表示输入进位位,COUT 表示输出进位位,输入A 和B 分别表示加数和被加数。输出SUM=A+B+CIN,当SUM 大于255 时,COUT 置‘1’。

4位全加器可以看做四个1位全加器级联而成,首先采用基本逻辑门设计一位全加器,而后通过多个1位全加器级联实现4位全加器。其中,其中C1表示输入进位位,C0表示输出进位位,输入A和B分别表示加数和被加数。S为输出和,其功能可用布尔代数式表示为:

S=A+B+C1

203130705岳慧慧

电子设计自动化技术EDA实习报告

首先根据一位全加器的布尔代数式应用基本逻辑门设计一位全加器,而后仿真验证一位全加器设计,准确无误后生成元件,供4位全加器设计用。将4个1位全加器级联构成四位全加器。

2.2条件要求

1.计算机及操作系统

2.MAX+Plus II 或Quartus II 软件 3.编程电缆(可选)

2.3主要内容

根据所学相关知识,运用MAX+PLUS II 或Quartus II 软件的图形输入方法,实现4位全加器设计。首先给出设计原理并提出实现方案,经指导教师同意后,通过设计输入、编译综合、仿真验证等过程完成并验证设计。

1.设计输入方法,包括图形输入、文本输入等 2.设计编译

3.器件选择及管脚分配 4.设计仿真 5.时序分析 6.编程下载

2.4方案及实现方法

设计过程中可以首先采用基本逻辑门设计1 位全加器,而后通过多个1 位全加器级联实现4 位全加器,也可以根据输出与输入的逻辑关系写出其布尔代数式,根据布尔代数式用基本逻辑门实现全加器。

2.5实践步骤与结果分析

(一)设计1 位全加器 1) 1 位全加器原理图

我设计了一位全加器,A和B是输入端,C1是进位输入端,C0是进位输出端,S是全加器输出端。

203130705岳慧慧

电子设计自动化技术EDA实习报告

以上为采用图形输入法完成的一个一位全加器电路。

2)1位全加器仿真波形

仿真结果如图,1位全加器设计成功。

(二)四位全加器设计

与门的两个输入A 和B 分配给管脚3 与2,输出C分配给管脚44,输出O分配给管脚43,所选器件为EPM3032ALC44-4。

1)四位全加器原理图

203130705岳慧慧

电子设计自动化技术EDA实习报告

2)器件及管脚逻分配图

203130705岳慧慧

电子设计自动化技术EDA实习报告

管脚分配情况如图,所选器件为EPM3032ALC44-4。

3)调试编译与仿真波形 1.调试编译

编译结果正确,无错误,但是有一个警告。

分析可得,通过二输入与门,非门,或门,输出的S为两者之和,C0为输出进位。 仿真结果与全加器真值表相同,四位全加器设计成功。

2.仿真波形

仿真波形如下图所示:

203130705岳慧慧

电子设计自动化技术EDA实习报告

当A3A2A1A0=0000,B3B2B1B0=0000时,S3S2S1S0=0000 ;当A3A2A1A0=0101,B3B2B1B0=1100时,S3S2S1S0=0001, 其他时刻波形也与全加器功能相符,全加器设计成功。

从仿真波形可以看出,输入输出结果满足表达式O=A XOR B、C=A AND B,亦即所设计电路功能达到设计要求。

4)时序分析图

203130705岳慧慧

电子设计自动化技术EDA实习报告

此处,我进行Claic Timing Analyzer 时序分析,可以得到A、B、C

1、C0、S五个端口的信号到达时间,同步逻辑性能分析后可知仿真波形图上不存在毛刺,满足四位全加器的设计要求。

(三)项目二的结论

我掌握了EDA 的开发流程及相关分析综合方法,在此基础上进一步熟悉MAX+PLUSⅡ或Quartus II 软件的使用方法,熟练掌握EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。同时复习加法器的原理,掌握加法器的设计实现方法,我完成的主要工作是设计了数字系统设计中常用的一个半加器。A和B是全加器加数和被加数,C1是全加器的进位输入,C0是全加器的进位输出,S是A加B的结果输出,并且利用波形仿真验证原理图的正确性。得出的结论是根据波形图结果,波形符合逻辑关系,无毛刺,十分完美地实现一位全加器。

三、8 线-3 线优先编码器

3.1基本原理

1、管脚

8 线-3 线优先编码器的管脚如图:

其中IN 表示输入编码位,Sel 为片选信号,Y 表示输出编码值,YS 与YEX 表示器件状态,“11”表示器件未选中,“01”表示无键按下,“10”表示器件工作态。

2、真值表

8-3 编码器的真值表如下:

3.2条件要求

1.计算机及操作系统

2.MAX+Plus II 或Quartus II 软件 3.编程电缆(可选)

203130705岳慧慧

电子设计自动化技术EDA实习报告

3.3主要内容

1.根据所学相关知识,运用MAX+PLUS II 或Quartus II 软件的文本文件输入方法,编写VHDL 程序,实现8-3 优先编码器的设计。首先给出设计原理并提出实现方案论证,经指导教师同意后,通过设计输入、编译综合、仿真验证等过程完成并验证设计。设计输入方法,包括图形输入、文本输入等

2.设计编译

3.器件选择及管脚分配 4.设计仿真 5.时序分析 6.编程下载

3.4方案及实现方法

8-3 优先编码器的VHDL 描述有多种方法,设计过程中可以根据真值表采用case„when语句、with„select 语句、if„then 结构等多种手段实现,也可以根据真值表分析输入输出间的逻辑关系,根据逻辑关系写出其布尔表达式,根据布尔代数式调用基本逻辑门元件实现8-3 优先编码器,详细方案与方法略。

3.5实践步骤与结果分析

(一)原理图和VHDL程序 1) 3-8译码器的原理图

203130705岳慧慧

电子设计自动化技术EDA实习报告

以上为采用图形输入法完成的一个3-8优先译码器。

2)VHDL程序

8-3优先编码器的VHDL描述有多种方法,设计过程中可以根据真值表采用case„when语句、with„select语句、if„then结构等多种手段实现,也可以根据真值表分析输入输出间的逻辑关系,根据逻辑关系写出其布尔表达式,根据布尔代数式调用基本逻辑门元件实现8-3优先编码器。 本实验中,我根据真值表用if-then结构实现8-3优先编码器。

203130705岳慧慧

电子设计自动化技术EDA实习报告

(二)器件及管脚逻分配图

管脚分配情况如图,所选器件为EPM3032ALC44-4。

(三)调试编译与仿真波形

1、调试编译

编译结果正确,无错误,但是有两个警告。

203130705岳慧慧

电子设计自动化技术EDA实习报告

2、仿真波形

8线-3线优先编码器的仿真波形如下图所示:

当3-8译码器的片选信号为000时,片选信号选中输出的个位,当3-8译码器的片选信号为001时,片选信号选中输出的十位,当3-8译码器的片选信号为010时,片选信号选中输出的个位,当3-8译码器的片选信号为011时,片选信号选中输出的十位,当3-8译码器的片选信号为100时,片选信号选中输出的个位,当3-8译码器的片选信号为101时,片选信号选中输出的十位,就这样动态扫描,当输入的时钟信号频率很高的时候,就形成了我们的时钟。

从仿真波形可以看出,输入输出结果满足所设计电路功能,符合前文真值表,3-8优先编码器达到设计要求。

(四)时序分析图

203130705岳慧慧 18

电子设计自动化技术EDA实习报告

此处,我进行Claic Timing Analyzer 时序分析,可以得到输入输出端口的信号到达时间都是4.5ns,同步逻辑性能分析后可知仿真波形图上不存在毛刺,满足3-8优先编码器的设计要求。

(五)项目三的结论

我掌握了EDA 的开发流程及相关分析综合方法,在此基础上进一步熟悉MAX+PLUSⅡ或Quartus II 软件的使用方法,熟练掌握EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。同时复习加法器的原理,掌握加法器的设计实现方法,我完成的主要工作是设计了数字系统设计中常用的一个3-8优先编码器,并且利用波形仿真验证VHDL程序和原理图的正确性。得出的结论是根据波形图结果,波形符合逻辑关系,无毛刺,十分完美地实现3-8优先编码器的功能。

我发现用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。

附:参考程序 LIBRARY IEEE; ENTITY ENCODER IS USE IEEE.STD_LOGIC_1164.ALL; PORT(I:IN STD_LOGIC_VECTOR(7 USE IEEE.STD_LOGIC_UNSIGNED.ALL; DOWNTO 0); 203130705岳慧慧

电子设计自动化技术EDA实习报告

SEL: IN STD_LOGIC; Y : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); YS,YEX : INOUT STD_LOGIC); END ENCODER; ARCHITECTURE sample OF ENCODER IS BEGIN P1:PROCESS(I,SEL) BEGIN if SEL=\'1\' then Y

YS

elsif I(3)=\'0\' then Y

elsif I(2)=\'0\' then Y

elsif I(1)=\'0\' then Y

elsif I(0)=\'0\' then Y

elsif I=\"11111111\" then Y

Y

END PROCESS P1; END sample;

四、10 进制计数器设计

4.1基本原理

1、管脚

10 进制计数器的管脚如图:

其中IN 表示输入编码位,Sel 为片选信号,Y 表示输出编码值,YS 与YEX 表示器件状态,“11”表示器件未选中,“01”表示无键按下,“10”表示器件工作态。

2、真值表

203130705岳慧慧

电子设计自动化技术EDA实习报告

10 进制计数器的真值表如下:

计数开始,计数器从计数初值开始做加计数或减计数。加计数时,计数到‘9’后,再来一个计数脉冲,计数器从‘0’开始。重新启动加计数;减计数时,计数到‘0’后,再来一个计数脉冲,计数器从‘10’开始,重新启动减计数。

4.2条件要求

1.计算机及操作系统

2.MAX+Plus II 或Quartus II 软件 3.编程电缆(可选)

4.3主要内容

① 根据所学相关知识,运用MAX+PLUS II 或Quartus II 软件的文本文件输入方法,编写VHDL 程序,实现10 进制计数器的设计。首先给出设计原理并提出实现方案论证,经指导教师同意后,通过设计输入、编译综合、仿真验证等过程完成并验证设计。设计编译

② 器件选择及管脚分配 ③ 设计仿真 ④ 时序分析 ⑤ 编程下载

4.4方案及实现方法

10 进制计数器的VHDL 描述有多种方法,设计过程中可以采用计数脉冲CP 作为敏感量,CP 的每个上升沿,计数值Q 加‘1’或减‘1’,加到‘9’后回‘0’或减到‘0’后回‘9’,语句可采用case„when、with„select、if„then 以及加减运算等多种结构实现。也可以首先设计基本的触发器、锁存器等元件,而后通过元件的互联实现,详细方案与方法略。

4.5实践步骤与结果分析

(一)原理图和VHDL程序 1) 10 进制计数器

203130705岳慧慧

21

电子设计自动化技术EDA实习报告

以上为采用图形输入法完成的一个3-8优先译码器。

2)VHDL程序

8-3优先编码器的VHDL描述有多种方法,设计过程中可以根据真值表采用case„when语句、with„select语句、if„then结构等多种手段实现,也可以根据真值表分析输入输出间的逻辑关系,根据逻辑关系写出其布尔表达式,根据布尔代数式调用基本逻辑门元件实现8-3优先编码器。 本实验中,我根据真值表用if-then结构实现8-3优先编码器。

203130705岳慧慧

22

电子设计自动化技术EDA实习报告

(二)器件及管脚逻分配图

管脚分配情况如图,所选器件为EPM3032ALC44-4。

(三)调试编译与仿真波形

1、调试编译

203130705岳慧慧

23

电子设计自动化技术EDA实习报告

编译结果正确,无错误,但是有一个警告。

2、仿真波形

10 进制计数器的仿真波形如下图所示:

从仿真波形可以看出,输入输出结果满足所设计电路功能,符合前文真值表,10 进制计数器达到设计要求。

(四)时序分析图

203130705岳慧慧

24

电子设计自动化技术EDA实习报告

203130705岳慧慧

25

电子设计自动化技术EDA实习报告

此处,我进行Claic Timing Analyzer 时序分析,可以得到输入输出端口的信号到达时间都是3.0ns,同步逻辑性能分析后可知仿真波形图上不存在毛刺,满足10 进制计数器的设计要求。

(五)项目四的结论

我熟练掌握了EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。我完成的主要工作是设计了数字系统设计中常用的一个10 进制计数器,并且利用波形仿真验证VHDL程序和原理图的正确性。得出的结论是根据波形图结果,波形符合逻辑关系,无毛刺,十分完美地实现10 进制计数器的功能。

我发现用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。

附:参考程序

LIBRARY IEEE; if UD=\'0\' then USE IEEE.STD_LOGIC_1164.ALL; if TMP=\"1001\" then USE IEEE.STD_LOGIC_UNSIGNED.ALL; TMP

五、8 位循环移位寄存器

5.1基本原理

1、管脚

8 位循环移位寄存器的管脚如图:

203130705岳慧慧

26

电子设计自动化技术EDA实习报告

其中D 表示输入的初始值,Sta 为开始移位信号,DOUT 表示当前数值;LD 表示预设计数值,LD 为“1”,初始计数值打入器件;LR 表示移位方向,LR 为‘0’,循环右移位,LR 为‘1’,循环左移位;CP 为移位脉冲。

2、真值表

8 位循环移位寄存器的真值表如下:

移位开始,循环左移时,CP 上每来一个脉冲升沿,寄存器从输出从低位开始依次左移一位,同时最高位给最低位。相反,循环右移时,从高位开始依次右移一位,同时最低位给最高位。

5.2条件要求

1.计算机及操作系统

2.MAX+Plus II 或Quartus II 软件 3.编程电缆(可选)

5.3主要内容

① 根据所学相关知识,运用MAX+PLUS II 或Quartus II 软件的文本文件输入方法,编写VHDL 程序,实现8 位循环移位寄存器的设计。首先给出设计原理并提出实现方案论证,经指导教师同意后,通过设计输入、编译综合、仿真验证等过程完成并验证设计。

② 器件选择及管脚分配 ③ 设计仿真 ④ 时序分析 ⑤ 编程下载

5.4方案及实现方法

8 位循环移位寄存器的VHDL 描述有多种方法,设计过程中可以首先设计D 触发器,而后通过D 触发器的互联实现8 位循环移位寄存器;也可采用计数脉冲CP 作为敏感量,CP 的每个上升沿,输出量Q 的每一位赋给左边一位或右边一位。同时循环左移时,最高位赋给最低位,循环右移时,最低位赋给最高位,语句可采用case„when、with„select、if„then以及加减运算等多种结构实现,详细方案与方法略。

5.5实践步骤与结果分析

203130705岳慧慧

27

电子设计自动化技术EDA实习报告

(一)原理图和VHDL程序 1) 8 位循环移位寄存器

以上为采用图形输入法完成的一个8 位循环移位寄存器

2)VHDL程序

8 位循环移位寄存器的VHDL描述有多种方法,设计过程中可以根据真值表采用case„when、with„select、if„then以及加减运算等多种结构实现,也可以根据真值表分析输入输出间的逻辑关系,根据逻辑关系写出其布尔表达式,根据布尔代数式调用基本逻辑门元件实现8 位循环移位寄存器。

本实验中根据真值表,通过VHDL语言的if-then结构实现8位循环移位寄存器。首先根据前文所述,对照真值表203130705岳慧慧

28

电子设计自动化技术EDA实习报告

的列出的不同输入逻辑状态,分情况依次输出于输入的对应关系,而后编译综合,由开发系统自行实现电路功能。

(二)器件及管脚逻分配图

管脚分配情况如图,所选器件为EPM3032ALC44-4。

203130705岳慧慧

29

电子设计自动化技术EDA实习报告

(三)调试编译与仿真波形

1、调试编译

编译结果正确,无错误,但是有一个警告。

2、仿真波形

8 位循环移位寄存器的仿真波形如下图所示:

203130705岳慧慧 30

电子设计自动化技术EDA实习报告

从仿真波形可以看出,输入输出结果满足所设计电路功能,符合前文真值表,8 位循环移位寄存器达到设计要求。

(四)时序分析图

203130705岳慧慧

31

电子设计自动化技术EDA实习报告

上述时间分析可以得到,输出信号存在的时间延迟,它主要与器件速度、表达逻辑的合理性有关,选用速度更高器件、优化设计可以使该值降低。

此处,我进行Claic Timing Analyzer 时序分析,可以得到输入输出端口的信号到达时间都是3.0ns,同步逻辑性能分析后可知仿真波形图上不存在毛刺,满足8 位循环移位寄存器的设计要求。

(五)项目五的结论

本次实验我收获到了很多移位寄存器的相关知识,虽然期间我遇到了很多无法解决的问题,但最终都通过查阅资料,询问同学,一一得到了解决。实验中我们完成了1个器件的编写:我使用了VHDL代码的方法。通过资料我知道了74HC164是8位移位寄存器,当其中一个(或二个)选通串行输入端的低电平禁止进入新数据,并把第一个触发器在下一个时钟脉冲来后复位到低电平时,门控串行输入端(A 和B) 可完全控制输入数据。一个高电平输入后就使另一个输入端赋能,这个输入就决定了第一个触发器的状态。虽然不管时钟处于高电平或低电平时,串行输入端的数据都可以被改变,但只有满足建立条件203130705岳慧慧

32

电子设计自动化技术EDA实习报告

的信息才能被输入。时钟控制发生在时钟输入由低电平到高电平的跃变上。为了减小传输线效应,所有输入端均采用二极管钳位。。每组实验我们都编写了他们的源代码,并且通过时序仿真和功能仿真不同的仿真方式让我对加法器这个逻辑学电子元件有了更深层次的了解。很多问题最终在老师同学和自己的不懈努力中得以解决。其中我遇到了一些代码上的书写错误问题,编译无法运行问题,以及时序仿真时出现的问题。不过最后在查阅相关资料后明白了自己是少了一些过程。

我发现用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。

我采用图形编程法实现了8位循环移位寄存器的设计,并完成了电路的设计编译、综合、逻辑仿真、时间分析,结果表明采用ALTRA的CPLD器件设计的8位循环移位寄存器,时间延迟为3ns。

附:参考程序

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cyreg IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); LD : IN STD_LOGIC; LR : IN STD_LOGIC; CP : IN STD_LOGIC; DOUT: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0)); END cyreg; ARCHITECTURE sample OF cyreg IS BEGIN P1:PROCESS(CP,LD) BEGIN if LD=\'0\' then DOUT

203130705岳慧慧

33

电子设计自动化技术EDA实习报告

第三章 结 论

首先,通过对这门课程相关理论的学习,我掌握EDA的一些基本的的知识,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快。实现这种进步的主要原因就是微电子技术和电子技术的发展。前者以微细加工技术为代表,目前已进入超深亚微米阶段,可以在几平方厘米的芯片上集成几千万个晶体管;后者的核心就是电子设计自动化EDA(lectronic Design Automatic)技术。EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

其次,通过对课程的实验的学习,让我感觉收获颇多,我对EDA的学习和理解有了更深刻的认识和体会,对数字逻辑与数字电路有初步的了解,而EDA是在数字电路发展到一定阶段的产物,因此学习起来也很费力。在这一周的实训中我们不仅巩固了以前学过的知识,而且还学到了怎样运用EDA设计VHDL程序、电路、波形的整个过程和思路,更加强了我们动手能力,同时也提高了我们的思考能力的锻炼,我们在写程序的同时还要学会要改程序,根据错误的地方去修改程序。

在此次实训的过程中,我了解到,我们需要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把所学的理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力。

我虽然碰到了很多困难和问题,到最后还是靠自己的努力与坚持独立的完成了任务。当遇到了自己无法解决的困难与问题的时候,要有耐心,要学会一步步的去找问题的根源,才能解决问题,还请教老师给予指导和帮助。这次实训给我最深的印象就是扩大自己的知识面,知道要培养哪些技能对我们的专业很重要。最终我成功地完成了这次的实践课程,包括时序仿真和 硬件测试仿真,都取得了较好地效果。还要在今后的课本理论知识学习过程中要一步一个脚印的扎实学习,灵活的掌握和运用专业理论知识这样才能在以后工作的实践过程中有所成果。

通过这次课程设计,我进一步熟悉了verilog hdl语言的结构,语言规则和语言类型。对编程软件的界面及操作有了更好的熟悉。在编程过程中,我们虽然碰到了很多困难和问题,到最后还是靠自己的努力与坚持独立的完成了任务。当遇到了自己无法解决的困难与问题的时候,要有耐心,要学会一步步的去找问题的根源,才能解决问题,还请教老师给予指导和帮助。这次实训给我最深的印象就是扩大自己的知识面,知道要培养哪些技能对我们的专业很重要。通过这次课程设计,培养了我们共同合作的能力。但是此次设计中参考了其他程序段实际思想,显示出我们在程序设计方面还有不足之处。

在此次实训的过程中,我了解到了要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力 。通过用VHDL语言设计,统领整个教学内容,让我们在学习过程中得到反复性的思维训练,加深了对教学内容的理解和运用,增强了我们对EDA技术应用性的熟悉和理解。

致 谢

非常感谢张老师这一学期来的指导与教诲,感谢老师在学习上给予的指导,老师平常的工作也很忙,但是在我们学习的过程中,从来没有耽搁过,我们遇到问题问他,他重来都是很有耐心,不管问的学生有多少,他都细心的为每个学生讲解,学生们遇到的不能解决的,他都配合同学极力解决。

感谢学院给我们提供这次实训的机会,感谢张老师对我们的指导,他是为了教会我们如何运用所学的知识去解决实际的问题,此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

本次设计过程中得到我们老师们的悉心指导。屈老师多次询问设计进程,并为我们指点迷津,帮助我们理顺设计思路,精心点拨、热忱鼓励。老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,并将积极影响我今后的学习和工作。在此诚挚地向老师们致谢,祝愿们老师身体健康,203130705岳慧慧

34

电子设计自动化技术EDA实习报告

全家幸福。

参考文献

[1]黄正瑾.CPLD系统设计技术入门与应用.北京:电子工业出版社,2003

[2]宋万杰,罗丰等.CPLD技术及其应用.西安:西安电子科技大学出版社,1999 [3]新编数字逻辑电路.北京邮电大学出版社.江国强.2006.12

[4]EDA技术与应用.电子工业出版社.江国强.2010.4

[5]数字电路EDA入门---VHDL程序实例集.北京邮电大学出版社.张亦华

[6]谭会生,张昌凡.EDA技术及应用[M].西安:西安电子科技大学出版社,2012.6 [7]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2008.8

203130705岳慧慧 35

推荐第4篇:eda实习报告封皮

青岛农业大学

电子设计自动化课程设计报告

2013——2014学年 第1学期

实习题目:数字式竞赛抢答器

姓名 :

学号 :

专业班级:

指导老师:

2013年8月26日

推荐第5篇:EDA实习报告(自动售卖机)

EDA技术及应用实习报告

自动售卖机

信息13-2班06号

GMH

北华大学电气信息工程学院

目 录

一、设计任务功能简介 ............................................................................2

1、设计任务 ......................................................................................2

2、主要功能 ......................................................................................2

二、原理、方案、框图及任务分解 ........................................................2

1、原理 ...............................................................................................2

2、方案 ...............................................................................................2

3、框图 ...............................................................................................3

4、任务分解 ......................................................................................3

三、关键任务的设计代码及注释 ............................................................4

四、调试中出现的问题及解决方案 ........................................................8

1、问题一...........................................................................................8

2、问题二...........................................................................................8

五、产业化市场分析及预测 ....................................................................8

六、测试及运行结果 ................................................................................9

七、参考文献...........................................................................................1

11

一、设计任务功能简介

1、设计任务

自动售货机设计。利用软件QuartusII软件,使用VHDL语言结合硬件要求对本题目设计功能进行编程,并在完成整个硬件程序设计后,在软件平台上进行编译和电路仿真,最后生成的目标文件下载到DE2-70实验板上实现上述所有功能并验证程序的可行性。

2、主要功能

本设计主要实现的功能为:货物信息存储功能、商品选择功能、输入钱数处理功能、货架商品更换功能、语音提示功能、信息显示等功能。

二、原理、方案、框图及任务分解

1、原理

自动售货机(Vending Machine,VEM)是能根据投入的钱币自动付货的机器。自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。是一种全新的商业零售形式,又被称为24小时营业的微型超市。能分为三种:饮料自动售货机、食品自动售货机、综合自动售货机。自动售货机是台机电一体化的自动化装置,在接受到货币已输入的前提下,靠触摸控制按 扭输入信号使控制器启动相关位置的机械装置完成规定动作,将货物输出。

2、方案

根据题目要求机器设有2个投币孔,机器可以接受1元和5元的纸币,分别有八种商品,价格分别为1元,4元,2元,3元,6元, 7元,5元,8元,机器采用拨码开关模拟机器的复位键、确认购买键和商品选择,并且通过开发板上的LED等分别显示购买的不同情况,数码管实时显示购买金额,包括投入的价钱,找零的价钱。此设计按照EDA课程设计 的流程进行源代码的编写、仿真。本设计主要利用QuartusⅡ等设计软件进行设计。

2

3、框图 依题目要求设计流程框图如下所示:

图2-1 程序流程图

4、任务分解

本设计主要包括按键模块、显示模块、语音提示模块。设计程序任务如下图:

图2-2 程序任务图

任务一:存储商品信息。商品名称及商品价格等信息。

任务二:响应用户选择商品的操作。用户用过按键选择商品,售卖机要实时显示商品名称及价格信息。

3 任务三:货币处理。待用户选择商品结束,售卖机要接收用户投币,包括判断纸币的面额、总金额、是否投币结束等信息。

任务四:人性化设计。售卖机要有良好的人性化交互界面,以及必要的文字、语音等提示信息。

三、关键任务的设计代码及注释

10000\";

elsif item =\"100\" then item_dis

elsif item =\"101\" then item_dis

elsif item =\"110\" then item_dis

elsif item =\"111\" then item_dis

item_dis

4 商品选择进程设计: data:proce(START,sel_add) begin

if START=\'1\' then

f sel_add\'event and sel_add=\'1\' then item

pay:proce(finish ,one,five) begin if finish=\'1\' then if one\'event and one =\'1\' then pay_money_one

if five\'event and five =\'1\' then pay_money_five

when \"0001\" =>

pay_money_dis_g

\"11111001\";pay_money_dis_s

\"0010\"

=>

pay_money_dis_g

\"10100100\";pay_money_dis_s

\"0011\"

=>

pay_money_dis_g

\"10110000\";pay_money_dis_s

\"0100\"

=>

pay_money_dis_g

\"10011001\";pay_money_dis_s

\"0101\"

=>

=>

pay_money_dis_g

\"10010010\";pay_money_dis_s

\"0110\"

=>

5

pay_money_dis_g \"10000010\";pay_money_dis_s

=>

when \"1100\" =>

pay_money_dis_g

\"10100100\";pay_money_dis_s

\"1101\"

=>

=>

pay_money_dis_g

\"10110000\";pay_money_dis_s

\"1110\"

=>

=>

pay_money_dis_g

\"10011001\";pay_money_dis_s

\"1111\"

=>

=>

pay_money_dis_g

\"10010010\";pay_money_dis_s

when others =>pay_money_dis_g

=>

pay_money_dis_s

if pay_money >= price then

6 \"11111001\";pay_money_dis_s money_back_dis money_back_dis money_back_dis money_back_dis money_back_dis money_back_dis money_back_dis money_back_dis money_back_dis

when \"1001\" =>money_back_dis

when others =>money_back_dis

---------------------- 声音提示进程设计:

int:proce(START,finish)

begin

if

START =\'1\' and

finish = \'0\' then sound

elsif START =\'1\' and

finish = \'1\' then sound

elsif START =\'0\' and

finish = \'0\' then sound

end if;

end proce int;

---------------------- end architecture behav;

7

四、调试中出现的问题及解决方案

1、问题一 问题描述:本设计语音芯片采用LJ600, 选择扬声器输出模式,可存储6段语音片段,对应6个引脚下降沿触发且低电平至少维持1ms,语音触发之后必须处于高电平状态,否则影响其他语音输出。综上描述,触发信号应为一个门信号。由于系统未引入时钟,且在同一进程中不可对输出信号重复赋值,产生问题。

解决办法:代码如下图,在if语句中实现状态跳转。

2、问题二 变量初始化状态必须明确定义高低电平。即状态输出时,必须考虑高低电平两种状态,不可以出现不确定状态。完全按照语法要求。

五、产业化市场分析及预测

随着信息技术的发展及人们生活水平的不断提高,人们的消费观念及消费需求都在不断地改变和提高。自动售卖机正是为了满足人们的这种需求而在多年前被引入国内的。但早期的自动售卖机在国内并未获得预期的市场反应及消费者的广泛使用。现阶段大多数的自动售

8 卖机只投放在国内一线城市,销售的货品也只停留在零食、饮料、饮用水、计生用品等有限的几样品种。 在零售业市场竞争日趋白热化的今天,压缩经营成本是增强企业市场竞争力的一个主要手段。然而无论是连锁超市还是便利店,日益高涨的店面租金及人力成本,已经成为他们无法忽视也无法回避的沉重负担。而自动售卖机却完全没有上述所说的麻烦,它24小时营业、售货便利、方便找零,占地面积小(一般仅需1平方米)、移动性强,无须常驻人员盯守、省人工成本,时尚新颖、个性独特、集高科技于一体,有利于树立品牌形象,养护费用低,日常免维护……这些优势势必引领潮流,使得自动售卖机日发成为市场新宠,在零售业市场占领一席之地。

六、测试及运行结果

售卖机整体结构如下图所示:

9

图6-1 整体结构

商品0的价格为4元。

商品1价格为7元。

商品7价格为8元,输入11元,找零3元。

10

商品选择按钮及确定按键。

七、参考文献

[1]潘松,黄继业.EDA技术与VHDL.第4版.北京:清华大学出版社,2013.4 [2]潘松,王国栋.VHDL实用教程(修订版).成都:成都电子科技大学出版社,2001 [3]曾繁泰,陈美金.VHDL程序设计.北京:清华大学出版社,2001.1

11

推荐第6篇:EDA设计报告

EDA

多 功 能 数 字 时 钟

专业:11级应用电子技术 班级:二班

学号:110372021307 姓名:贺成林 指导老师:祝宏

日期:2012年6月29日

一、实验目的

1、课程设计是一实践教学环节,是针对《数字电子技术》课程的要求,结合实践对学生进行综合设计性训练,在自学和实践训练中培养学生理论联系实践和实践动手能力,独立地解决实际问题能力。

2、通过课程设计是使学生熟悉和了解可编程专用数字逻辑电路的设计、开发流程,熟悉和了解现代EDA设计工具,掌握数字电子系统层次化的设计方法。

已知条件:MAX+Plus软件

基本功能:

1、以数字形式显示时、分、秒的时间;

2、小时计数器为24进制;

3、分秒计数器为60进制。

二、实验要求

1 、综合应用《数字电子技术基础》课程中的理论知识去独立地完成一个设计课题;

2、熟悉和了解现代EDA设计、编程、编译、仿真及下载技术的全过程。

三、EDA 技术介绍

1、EDA 技术概况

EDA 是电子设计自动化(Electronic Design Automation)的缩写,在 20 世 纪 90 年代初从计算机辅助设计(CAD) 、计算机辅助制造(CAM) 、计算机辅助测试 (CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA 技术就是以计算机为工 具,设计者在 EDA 软件平台上,用硬件描述语言 HDL 完成设计文件,然后由计算机 自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特 定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA 技术的出现,极大地提 高了电路设计的效率和可*性,减轻了设计者的劳动强度。

2、ALTERA QUARTUS II 软件介绍

Quartus II 是 Altera 公司的综合性 PLD 开发软件,支持原理图、VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种 设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件 配置的完整 PLD 设计流程。

四、关键词

数字计数器 、动态显示、快速校分、整点报时 、时段控制。

五、实验步骤

1、秒计数器是60进制的。当下面的74161到9时等下一个脉冲来是向上面的74161计数,到5时将两个74161共同预置。从而实现00—59秒的计数功能。

电路图如下:

进行编译及波形仿真,如下图: 将上述文件保存并打包,如图:

2、分计数器是60进制的。功能如秒计数器。 其电路图如下:

波形图仿真及打包图如下:

3、小时计数器是24进制的。当下面的74161到9时等下一个脉冲来是向上面的74161计数。但是等到上面的记到2时下面的将不能超过4,所以等上面的记到2,下面的记到4时就将两个74161共同预置。从而实现00—24秒的计数功能。

原理图如下:

仿真的波形图及打包的文件图如下:

4、校时。校时是通过加快时分的计数速度来快速校准时间的。实际上我们把秒脉冲cps加到分计数和时计数上,是他们加快计数速度。所以其中我们需要通过开关来选择。

原理图及打包图如下:

5、时段控制:时段控制是通过7485集成电路的数据比较来控制的。

原理图及打包图如下:

6、整点报时:整点报时是通过整点时的二进制数据规律来报时的。

原理图及打包图如下:

7、将时分秒打包文件连成多功能数字电路图如下:

8、多功能数字钟硬件测试原理图如下:

9、部分制作过程图,如下:

六、实验工具

装有QuartusⅡ软件的电脑, EDA开发板,相关EDA设计方面的书籍。

七、设计中遇到问题及解决方法

1、实验后期的引脚分配及下载方法不当,实验所用电脑没有

quartus11.0 的 驱动。耗费时间较多。 解决方法:参阅西安电子科技大学出版社出版的《数字电路设计及 Verilog HDL 实现》第 394 页关于引脚分配和下载验证的介绍;

2、下载验证过程中时段控制部分有错误,原代码在软件上仿真没有错误, 但是下载到实验板验证时,出现错误。解决方法:通过去请教同学及查阅相关资料得到解决。

八、特点和实用性

利用 QuartusII 软件,结合所学的数字电路的知识设计一个 24 时多功能数 字钟,具有正常分、秒计时,动态显示、快速校分、整点报时、时段控制的功能。 分析整个电路的工作原理,分别说明各子模块的设计原理和调试、仿真、编 程下载的过程, 并对最终结果进行总结,最后提出在实验过程中出现的问题和解 决的方案。 通过实验掌握一些逻辑组合器件的基本功能和用法, 同时体会利用软件设计 电路的方便快捷,避免硬件布线的繁琐,提高效率。

九、心得体会

1、设计必须要有整体概念,提前熟悉软件。刚开始时没头绪,不知道该怎 样分块,进度很慢,加上对软件不是很熟悉,比如:封装要注意哪些,哪些不能 运行,哪些是不正确的操作等等,走了很多冤枉路。

2、设计的模块要分块调试,免得等所有都完工了再调试出错,那样的话很 难确定是什么出错,更加没头绪。有必要的话做一部分后就送到平台上调试,这 样会大大减少出错率。

3、没有硬件软件化的概念,开始设计时没有总体的规划,不知道什么是可行 的,什么是封装,怎样使搭配组合最优化。

4、遇到问题先自己摸索,查阅资料要有技巧,避免没有目的和思路。明白 自己要解决什么问题。同时请教老师,和同学交流。良好的沟通很重要。针对本次的毕业设计, 用我国著名的数学家的话概括一下我的感受: "科学上没有平坦的大道,真理长河中有无数礁石险滩。只有不为畏攀登的采药者,只有不怕 巨浪的弄潮儿,才能登上高峰采得仙草,深入水底觅得骊珠。"

十、参阅教材及文献

1、蒋立平编著《数字电路》.南京理工大学翻印;

2、南京理工大学电子技术中心编著.《EDA 设计实验指导书》 南京理工大学, 2008 年;

3、谭会生,张昌凡.《EDA 技术及应用》.西安电子科技大学出版社,2001年;

4、《数字电路设计及 Verilog HDL 实现》 西安电子科技大学出版社出版;

5、《电子线路实验设计与仿真讲义》。

推荐第7篇:EDA课程设计报告

时 间 学 院 专业班级 姓 名 学 号 教 师 成 绩

北京科技大学——自1105班——王玮——41151133

EDA课程设计报告

2013年12月

北京科技大学——自1105班——王玮——41151133

一、课程目的

1.学习和了解EDA技术的内容、开发软件以及发展过程。 2.熟练掌握Multisim软件的功能使用和仿真工具的应用。 3.学会使用Multisim软件设计电路、仿真实现一些简单的功能。 4.根据所设计的电路,在Multisim 计算机软件开发环境下,详细介绍如何自动实现电路图的绘制、仿真及测试故障诊断

二、设计内容

利用Multisim设计一个四路彩灯控制器。它要求系统启动后自动从初始状态按规定程序完成3个节拍的循环演示。第一节拍:四路彩灯从右向左逐次渐亮,;第二节拍:四路彩灯从左向右逐次渐灭;第三节拍:四路彩灯同时亮后,同时变暗,进行4次。

三、设计原理

根据系统要求,设计系统硬件框图如下图所示。

1.信号发生器

信号发生器提供频率为100赫兹的脉冲。

北京科技大学——自1105班——王玮——41151133 2.四进制分频器

分频器可由各种类型的四进制计数器构成。在此,采用74LS74N中的D触发器,连接成下图所示的四进制异步减法计数器。

3.三进制节拍控制器

此系统有3个不同的工作节拍,是由状态(Q

1、Q0)的三种编码(

10、0l、11)表示的。选用74LS74N中的D触发器和74LS00D中 的与非门构成下图所示的三进制计数器。

4.节拍程序控制器

双相移位寄存器是74LS194,是产生移动灯光信号的核心器件。下图是74LS194的逻辑图和功能表。该寄存器由4个RS触发器及它们的输入控制电路组成。具有并行寄存、左移寄存、右移寄存和保持四种工作模式。 为清零端,低电平有效;CLK为上升沿触发,SL、SR分别为左移和右移串行输入端;S0、S1为两个控制输入端,它们的状态组合可以完成保持、右移、左移、并行输入四种控制功能。当S1=0,S0=0时电路保持原来的状态;当S1=0,S0=1时,数据从右移输入端SR送入寄存器;当S1=1,S0=0时,数据从左移输入端SL送入寄存器;当S1=1,S0=1时,数据从DCBA并行输入端预置数。

北京科技大学——自1105班——王玮——41151133

四、系统调试修改

在程序主界面内创建如下图所示的仿真电路,其中的过程图示也见下图。

图1 未仿真时的电路

北京科技大学——自1105班——王玮——41151133

图2 仿真时的电路

图3 仿真时的示波器

北京科技大学——自1105班——王玮——41151133

五、收获及心得

通过本次EDA课程设计,我对multisim这个软件有了进一步的认识,同时通过老师的课上讲解和课下查阅资料,我对EDA的了解更深一层次,对它的发展历史和一些常用的开发环境和软件有了较为系统的认识。Multisim 的仿真方法切合实际, 所选元件和仪器与实际应用非常相近, 均可直接从屏幕上选取, 而且仪器的操作开关、按键与实际仪器极为相似, 改变了传统基于电路板的设计方法, 从而大大缩短了设计时间,降低实验成本, 提高了效率。

在设计过程中,当然不可避免的遇到了诸多问题。首先是对软件的汉化,对于原英文软件打开后完全是一直半解,网上查了汉化方式才解决。其次是找一些原件也遇到了障碍,一些自己想用的型号有些不符,查阅了网上的很多资料才找到或者找到一些代替的原件。还有刚做好的电路由于自己频率没有选合适,所以结果与自己的预想有些偏差,试了好多才选好。

推荐第8篇:EDA实训报告

《EDA技术及其应用》

实 训 报 告

班 级 08级电子信息工程技术2班 姓 名 学 号

指导教师

2010年 5 月 26 日 郑州信息科技职业学院 机械电子工程系

一、实训名称„„„„„„„„„„„„„„„„3

二、实训目的„„„„„„„„„„„„„„„„3

三、实训器材、场地„„„„„„„„„„„„„3

四、设计思想„„„„„„„„„„„„„„„„3

五、设计任务与要求、设计源程序与模块„„„„3

1、

2、

3、

4、

5、设计任务„„„„„„„„„„„„„„„„3 设计要求„„„„„„„„„„„„„„„„4 设计源程序及生成模块„„„„„„„„„„4 模块连接„„„„„„„„„„„„„„„„14 引脚绑定„„„„„„„„„„„„„„„„15

六、实训方法„„„„„„„„„„„„„„„„16

七、实训心得体会„„„„„„„„„„„„„„16

一、实训名称:百年历的设计与制作

二、实训目的:

1、

2、

3、

4、

5、掌握VHDL设计数字系统的应用。掌握宏功能模块的应用。

掌握系统存储器数据读写编辑器的应用。

明确设计任务和要求,了解EDA技术的基本应用过程及领域。

理解百年历的设计原理及分析方法。

三、实训器材与场地:

EDA实验箱、计算机,EDA实验室

四、设计思路:

先设计“秒”、“分”、“时”、“日”、“月”、“年”、“选择”及“调整”等模块,然后把各模块按照生活中日历时钟走动的规律连接在一起,最后调试并下载、绑定引脚、调整。

五、设计任务与要求、设计原理与模块

设计任务:

1、

2、

3、

4、

5、

6、

7、

8、

9、用VHDL语言设计“秒钟”即六十进制计数器。用VHDL语言设计“分钟” 即六十进制计数器。 用VHDL语言设计“时钟” 即二十四进制计数器。 用VHDL语言设计“日”系统。 用VHDL语言设计“月”系统。 用VHDL语言设计“年”系统。 用VHDL语言设计“选择”系统。 用VHDL语言设计“调整”系统。

调用以上模块,在Block Diagram/Schematic File 中编辑窗口中把它们按一定规律连接起来即百年历系统。

设计要求:

在现实生活中,年份有平闰之分,当平年的2月份有28天,闰年的2月份29天,每年的

1、

3、

5、

7、

8、

10、12月份都是31天,

4、

6、

9、11月份都是30天,故在设计“年、月、日”系统时必须考虑它们之间的关系,由于手中的EDA实验箱上的数码管不足,必须设计一个“选择”系统,让“年月日时分秒”分成两屏显示。在现实生活中,日期和时间在不同的地方时间不同,故需设计一个“调整”系统用来调整日期及时间。 设计源程序及其生成的模块:

1、六十进制计数器源程序及其模块

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt60 is port(clk:in std_logic;

m1:out std_logic_vector(3 downto 0);

m2:out std_logic_vector(3 downto 0);

cout:out std_logic); end cnt60; architecture behav of cnt60 is begin proce(clk) variable cq1,cq2:std_logic_vector(3 downto 0); begin if clk\'event and clk=\'1\' then cq1:=cq1+1; if cq1>9 then cq1:=\"0000\";cq2:=cq2+1; end if; if cq2=5 and cq1=9 then cq2:=\"0000\";cq1:=\"0000\"; cout

end if; end if; m1

2、二十四进制计数器源程序及其模块

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt24 is port(clk:in std_logic;

q1:out std_logic_vector(3 downto 0);

q2:out std_logic_vector(3 downto 0);

cout:out std_logic); end cnt24; architecture behav of cnt24 is begin proce(clk) variable cq1,cq2:std_logic_vector(3 downto 0); begin if clk\'event and clk=\'1\' then cq1:=cq1+1;

if cq1>9 then cq1:=\"0000\";cq2:=cq2+1; end if; if cq2=2 and cq1>3 then cq2:=\"0000\";cq1:=\"0000\"; cout

3、“日”系统源程序及其模块

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity tian is

port(clk:in std_logic;

a: in std_logic;

b:in std_logic;

t1:out std_logic_vector(3 downto 0);

t2:out std_logic_vector(3 downto 0);

cout:out std_logic); end tian; architecture behav of tian is signal Q1,Q2: std_logic_vector(3 downto 0);

signal ab: std_logic_vector(1 downto 0); begin proce(clk,a,b) begin if clk\'event and clk=\'1\'

then Q1

if Q1=9 then Q1

end if;

ab

case ab is

when\"00\" =>

if Q2=3 and Q1=1 then Q2

else cout

end if;

when\"01\" =>

if Q2=3 and Q1=0 then Q2

else cout

end if;

when\"10\" =>

if Q2=2 and Q1=8 then Q2

else cout

end if;

when\"11\" =>

if Q2=2 and Q1=9 then Q2

else cout

end if;

when others =>null;

end case;

end if;

end proce;

t1

4、“月”系统源程序及其模块

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity yue is

port(clk:in std_logic;

run:in std_logic;

y1:out std_logic_vector(3 downto 0);

y2:out std_logic_vector(3 downto 0);

a,b,cout:out std_logic); end yue; architecture behav of yue is signal q1,q2 : std_logic_vector(3 downto 0); signal q1q2 : std_logic_vector(7 downto 0); begin proce (clk)

begin

if clk\'event and clk=\'1\' then

q1

if q1=9 then q1\'0\');

q2

end if;

if q2=1 and q1=2 then q1\'0\');

cout

else cout

end if;

end if; end proce; proce (clk) begin

q1q2

when \"00000001\" =>a

when \"00000010\" =>

if run=\'0\' then a

else a

end if; when \"00000011\" =>a a a a a a a a a aNULL; end case; end proce; y1

9

y2

5、“年”系统源程序及其模块

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity nian is

port(clk:in std_logic;

run:out std_logic;

n1:out std_logic_vector(3 downto 0);

n2:out std_logic_vector(3 downto 0)); end nian; architecture behav of nian is signal q1,q2,q: std_logic_vector(3 downto 0); begin proce (clk)

begin

if clk\'event and clk=\'1\' then

q1

if q1=9 then q1\'0\');

q2

if q1=9 and q2=9

then q1

end if;

end if;

end if; end proce; proce (clk)

begin if clk\'event and clk=\'1\' then

q

if q=4 then run

else run

end if;

end if; end proce; n1

end;

6、“调整”系统源程序及其模块

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity tiao is

11

port(m0,f0,s0,t0,y0:in std_logic;

k2:in std_logic;

k3:in std_logic;

fi,si,ti,yi,ni:out std_logic;

l2,l3,l4,l5,l6:out std_logic); end; architecture behav of tiao is signal a:std_logic_vector(3 downto 0); begin proce(k2) begin if k2\'event and k2=\'1\' then

a

if a=5

then a

end if; end if; case a is

when \"0000\"=>fifififififinull; end case; end proce; end; 12

7、“选择”系统源程序及其模块

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity kong is port(k:in std_logic;

s1,s2,f1,f2,m1,m2,n1,n2,y1,y2,t1,t2:in std_logic_vector(3 downto 0);

q:out std_logic;

a0,a1,a2,a3,a4,a5:out std_logic_vector(3 downto 0)); end; architecture behav of kong is begin proce(k) begin if k=\'1\' then

a0

a0

end;

模块连接截图:

模块是按照生活中的日历与时钟的走动规律来连接的,“选择”模块的作用是让时间和日期分屏显示,“调整”模块的作用是调整时间和日期的。

引脚绑定图:

经过分析,我们选择按照实验电路结构图No.7进行引脚的绑定,可知每个控制引脚在EDA实验箱上对应的按键。

六、实训方法

1、设计每个小系统,调试、仿真、生成模块。

2、按照各模块的功能连接,调试。

3、引脚绑定,下载,调试。

4、调整,把日期时间调整到现在的日期时间上。按选择键切换屏显时间和日期。

七、实训心得体会:

通过本次EDA课程设计实训,在了解到百年历的基本原理的同时,我还熟练掌握了Quartus II 软件的使用方法,学会了怎么设计一个完整的系统,并且意识到作为二十一世纪的跨世纪电子信息工程专业人才,这些软硬件的应用操作常识是必不可少的。在此次实训的过程中,我虽然碰到不少困难和问题,到最后还是经过自己的不懈努力和在老师的指导与帮助下全部解决了。这次实训给我的最深的印象就是扩大自己的知识面,了解更多与本专业有关的科技信息,与时代共同进步,才能在将来成为有用的科技人才。

推荐第9篇:EDA综合实验设计报告

Beijing Jiaotong University

EDA实验设计报告

指导老师:刘彪

院:电子信息工程学院 姓

名:黄家维 学

号:13213012 班

级:电子1301

实验地点:电气楼406

实验日期:2014年5月29日星期四

实验一熟悉QuartusII软件的安装及使用(4学时)

我们通过下载及安装,可在电脑上运行Altera Quartus II。打开软件,新建一个工程,在工程底下新建一个VHDL File,即可实现编程功能。编完程序后点击Start Compilation可试运行程序,待编写的程序运行无误后,再在此工程下新建一个Vector Waveform File,给程序中的输入变量赋值,保存后点击Start Simulation即可实现程序的仿真。 实验

二、组合逻辑电路的设计 实验方案设计、实验方法、1.实验方案

8-3优先编码器的VHDL描述有多种方法,设计过程中可以根据真值表采用case…when语句、with…select语句、if…then结构等多种手段实现,也可以根据真值表分析输入输出间的逻辑关系,根据逻辑关系写出其布尔表达式,根据布尔代数式调用基本逻辑门元件实现8-3优先编码器。

本实验中根据真值表用if-then结构实现8-3优先编码器 2.实验方法

首先根据前文所述,对照真值表的列出的不同输入逻辑状态,分情况依次输出于输入的对应关系,而后编译综合,由开发系统自行实现电路功能。 实验步骤

1.设计输入 利用FILE\\New菜单输入VHDL源程序,创建源文件 2.设计项目的创建 1) 原文件存储…..

2) 利用FILE\\Project\\Set Project… 3.设计编译 ….

4.器件选择及管脚分配 …..5.设计仿真 …..6.时序分析 …..7.编程下载(可选)….LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ENCODER IS

PORT(

D:IN TO 7);

A:OUT STD_LOGIC_VECTOR(0 TO 2)

); END ; ARCHITECTURE XIANI OF ENCODER IS BEGIN PROCESS(D) BEGIN IF

(D(7)=\'0\')THEN A

ELSIF (D(6)=\'0\')THEN A

STD_LOGIC_VECTOR(0

ELSIF (D(5)=\'0\')THEN A

ELSIF (D(4)=\'0\')THEN A

ELSIF (D(3)=\'0\')THEN A

ELSIF (D(2)=\'0\')THEN A

ELSIF (D(1)=\'0\')THEN A

ELSIF (D(0)=\'0\')THEN A

ELSE A

END IF; END PROCESS; END;

1用CASE语句设计一个4-16译码器。 设计思路:

通过case语句可实现使能端的控制及4-16译码器的功能,即输入一个四位二进制数,即可使输出的16个端口中相应的端口电平发生变化。用case语句来实现译码器中相应数值选择的功能恰到好处。 程序:

其中实体名为SB2,when \"0000\"=>outt(15 downto 0)

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

shi:in std_logic;

outt:out std_logic_vector(15 downto 0)); end entity SB2; architecture sb of SB2 is

begin proce(inn,shi) begin if shi=\'1\' then case inn is when \"0000\"=>

outt(15 0)

outt(15 0)

outt(15 0)

outt(15 0)

outt(15 0)

outt(15 0)

outt(15

downto

downto

downto

downto

downto

downto

downto 0)

outt(15 0)

outt(15 0)

outt(15 0)

outt(15 0)

outt(15 0)

outt(15 0)

outt(15 0)

downto

downto

downto

downto

downto

downto

downto when \"1110\"=>outt(15 downto 0)

outt(15

downto 0)

=>outt(15

downto 0)

当输入inn为0000时,输出outt中的第16个端口变为低电平,即实现了译码的功能。实际仿真波形如下图。

实验3:时序电路设计

设计4位二进制同步加/减法可逆计数器,其中 输入: clr:

异步清零(高电平有效) clk:

时钟输入

d3-d0:

4位二进制数输入端 updown:

加/减法控制信号(‘1’加,‘0’减) 输出: q3-q0:

4位二进制计数输出 co:

进位输出 bo:

借位输出 设计思路:

用if语句实现清零及加减法的选择。若选择updown=1,则当时钟输入为高电平时输入的d就加1,当d=1111时进位输出co就变1,最后将d中的数送给q来输出,以达到4位二进制同步加/减法可逆计数器的设计。 程序:

其中实体名为

CTRDIV16,程序中两个关键的if语句即可实现加减法的控制及进位、借位的输出。具体程序如下: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity CTRDIV16 is

port(clk:in STD_LOGIC;

updown:in STD_LOGIC;

clr:in STD_LOGIC;

q:out STD_LOGIC_VECTOR downto 0);

co,bo:out std_logic); end CTRDIV16;

(3 architecture sbb of CTRDIV16 is signal d:std_logic_vector(3 downto 0); begin proce(clk,clr,updown) begin if clr=\'1\' then

d

if updown=\'1\' then

d

co

bo

else

d

co

bo

end if;

if d=\"1111\" and updown=\'1\' then

co

bo

end if;

if d=\"0000\" and updown=\'0\' then

bo

co

end if; end if; end proce; proce(d) begin q

若选取updown=1(加法),通过波形即可看出,该程序已经实现了d的加法运算,同时在d=1111时,进位输出co跳转一次,即有一个进位。

若选取updown=0(减法),该程序也实现了d的减法运算,同时在d=0000是,借位输出bo跳转一次,即有一个借位输出。具体仿真波形如下。

updown=1(加法) updown=0(减法)

实验感想:

quartusII可以模拟硬件设计,即为硬件程序烧写模拟软件,操作简单,易于运行。它让我熟练了实际硬件的使用语言和逻辑顺序,并能实现一些简单硬件的程序编制和模拟仿真,使我对VHDL和EDA有了更加具体而深刻的认识,我认为这次实验设计对使我获益匪浅,一定会为我以后的学习生活带来不少的益处。

推荐第10篇:EDA万年历课程设计报告

《EDA技术及其应用》

实 训 报 告

班 级 姓 名 学 号 指导教师

目 录

一 设计要求 ......................................2

1.0 设计目的及意义 .................................2 1.1 设计要求 .......................................2

二 设计流程: ....................................2

2.0 原理框图 .......................................2 2.1 VHDL设计思路 ...................................3

三 VHDL程序 ......................................3

3.0 天计数模块 ......................................6 3.1 月计数模块 .....................................7 3.2 年计数模块 ......................................9 3.3 调时控制模块 ..................................11 3.4 译码模块 ......................................12 3.5 扫描模块........................................12

四 心得体会 .....................................14 4.0 ................................................14 五 附录...........................................15 5.0 顶层文件 ......................................15

一、设计目的及意义

1.0 设计目的及意义

在掌握EDA理论知识的基础上进一步了解EDA开发软件QuartusII的使

- 1

entity tian is port(clk:in std_logic; pan:in std_logic_vector(1 downto 0); T1:out std_logic_vector(6 downto 0); cout:out std_logic); end tian;

architecture one of tian is

signal q1:std_logic_vector(3 downto 0); signal q2:std_logic_vector(2 downto 0); signal ab:std_logic_vector(1 downto 0); begin

proce(clk,pan)

begin

if clk\'event and clk=\'1\'

then q1

if q1=9 then q1

end if; case pan is when \"00\"=>if q2=3 and q1=1 then q2

end if; when \"01\"=>if q2=3 and q1=0 then q2

end if; when \"10\"=>if q2=2 and q1=8 then q2

end if; when \"11\"=>if q2=2 and q1=9 then q2

end if; when others=>null; end case; end if; end proce; T1(3 downto 0)

- 3

when others=>null; end case; end if; Y1(3 downto 0)

3.2 年计数模块

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

entity nian is port(clk :in std_logic; n1:out std_logic_vector(6 downto 0);

run:out std_logic); end entity;

architecture one of nian is signal q1,q3:std_logic_vector(3 downto 0); signal q2:std_logic_vector(2 downto 0);

begin proce(clk)

begin if clk\'event and clk=\'1\' then

q1

if q1=9 then q2

if q1=9 and q2

end if; end proce;

- 5

sel:out std_logic_vector(2 downto 0)); end seltime; architecture fun of seltime is signal count:std_logic_vector(2 downto 0); begin sel=\"101\")then countdaoutdaout(3)daoutdaout(3)daoutdaout(3 downto 2)

3.5 译码模块

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

entity led is port( ledi:in std_logic_vector(3 downto 0); ledo:out std_logic_vector(6 downto 0));

- 7

次万年历实训我们是四个人作为一个团队,在实训过程中,有时候一个人在编写程序时出现一点很小的错误(例如:程序中少了一个分号或者少了一个字母)就会导致整个程序编译不能通过,而四个人在一起,出现错误时一起去寻找,总会有一个人及时发现错误的,发现后及时纠正错误,然后继续开展下面的工作。这样三个人互相协作,共同努力,各自发挥自身的优势,这样工作便能顺利的进行下去,如果是一个人单独去完成,在出现错误的时候自己要想发现错误便需要很长的时间才能发现,这样很浪费时间,浪费时间的结果就是直接导致工作效率低。而在如今的社会工作中,许多公司企业都要求应聘者要有很好的团队合作精神,工作时要有高效的工作效率。因此,在这次实训中我也切身体会到了团队合作的重要性。

实训是对每个学生综合能力的检验是让我们能够更好的巩固专业知识,积累工作经验,掌握工作技能。通过这次实训,让我深深的体会到要想做好每一件事情,除了自己平时要有一定的专业知识外,还需要一定的实践动手能力,操作能力,说实话,这次实训让我学到了很多东西,也明白了很多事情。在此还要感谢王老师耐心、认真的指导。谢谢薛老师!

五、附录

5.0 顶层文件

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity nianli is port(clk,clkdsp:in std_logic; k1,k2:in std_logic; dpout,d10,d20:out std_logic; ledout :out std_logic_vector(6 downto 0); sel1:out std_logic_vector(2 downto 0));

end entity; architecture one of nianli is component tian port(clk:in std_logic; pan:in std_logic_vector(1 downto 0); T1:out std_logic_vector(6 downto 0); cout:out std_logic); end component; component yue port(clk,run:in std_logic; cout:out std_logic; pan:out std_logic_vector(1 downto 0);

- 910 -

第11篇:EDA实习图信息10209

二,利用quartus2软件及VHDL语言设计组合逻辑电路 双2选1多路选择器先做2选1

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

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY muxk ISPORT(a1,a2,a3,s0,s1:I outy:OUT BIT); END ENTITY muxk; ARCHITECTURE fd OF muxk ISCOMPONENT mua21a PORT(a,b,s:IN BIT;

y:OUT BIT) END COMPONENT; SIGNAL temp:BIT BEGIN u1:mux21a PORT MAP(a=>a2,b=>a3,s=>s0,y=>temp);

u2:mux21a

PORT

MAP(a=>a1,b=>temp,s=>s1,y=>outy);

END ARCHITECTURE fd;输入全是高电平,,观察输出

输出如下

为高电平

当s1=1 s0=0 a1 a2 a3 如下图所示观察输出

输出波形为输出为a2

三.利用Quartus2软件及VHDL语言设计时序逻辑电路 1.LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 I PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 I SIGNAL Q1 : STD_LOGIC ;

--类似于在芯片内部定义一个数据的暂存节点 BEGI PROCESS (CLK,Q1)BEGIN IF CLK\'EVENT AND CLK = \'1\'

THEN Q1

END PROCESS ;Q

--将内部的暂存数据向端口输出(双横线--是注释符号)END bhv;

四.Quartus2软件及VHDL设计同步或异步时序电路

利用USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC;

CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT : OUT STD_LOGIC );

END CNT10ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST = \'1\' THEN

CQI := (OTHERS =>\'0\') ; --计数器异步复位

ELSIF CLK\'EVENT AND CLK=\'1\' THEN

--检测时钟上升沿IF EN = \'1\' THEN

--检测是否允许计数(同步使能) IF CQI

CQI := CQI + 1;

--允许计数, 检测是否小于9

ELSE

CQI := (OTHERS =>\'0\');

--大于9,计数值清零

END IF; END IF; END IF;

IF CQI = 9 THEN COUT

--计数大于9,输出进位

ELSE

COUT

CQ

--将计数值向端口输出

END PROCESS;END behav;

输出

七段数码

状态机 输入01

输出

第12篇:EDA实训报告总结

实训心得

短暂的一周实训已经过去了,对于我来说这一周的实训赋予了我太多实用的东西了,不仅让我更深层次的对课本的理论知识深入了理解,而且还让我对分析事物的逻辑思维能力得到了锻炼,提高了实际动手能力,下面谈一下就这一周实训中我自己的一些心得体会。 一周的实训已经过去了,我们在老师提供的实践平台上通过自己的实践学到了很多课本上学不到的宝贵东西,熟悉了对quartus ⅱ软件的一般项目的操作和学到了处理简单问题的基本方法,更重要的是掌握了vhdl语言的基本设计思路和方法,我想这些会对我今后的学习起到很大的助推作用。此外,还要在今后的课本理论知识学习过程中要一步一个脚印的扎实学习,灵活的掌握和运用专业理论知识这样才能在以后出去工作的实践过程中有所成果。

最后还要感谢学校为我们提供这样专业的实践平台还有瓮老师在一周实训以来的不断指导和同学的热情帮助。总的来说,这次实训我收获很大。

同时,感谢大专两年来所有的老师,是你们为我解惑受业,不仅教授我专业知识,更教会我做人的道理。

这次eda实训让我感觉收获颇多,在这一周的实训中我们不仅巩固了以前学过的知识,而且还学到了怎样运用eda设计三种波形的整个过程和思路,更加强了我们动手能力,同时也提高了我们的思考能力的锻炼,我们在写程序的同时还要学会要改程序,根据错误的地方去修改程序。

本文基于verilog hdl的乒乓球游戏机设计,利用verilog hdl语言编写程序实现其波形数据功能在分析了cpld技术的基础上,利用cpld开发工具对电路进行了设计和仿真,从分离器件到系统的分布,每一步都经过严格的波形仿真,以确保功能正常。

从整体上看来,实训课题的内容实现的功能都能实现,但也存在着不足和需要进一步改进的地方,

为我今后的学习和工作奠下了坚实的基础。通过此次的实训课题,掌握了制作乒乓球游戏机技术的原理及设计要领,学习并掌握了可编程逻辑电路的设计,掌握了软件、cpld元件的应用,受益匪浅, 非常感谢瓮老师这一学期来的指导与教诲,感谢老师在学习上给予的指导,老师平常的工作也很忙,但是在我们学习的过程中,重来没有耽搁过,我们遇到问题问他,他重来都是很有耐心,不管问的学生有多少,他都细心的为每个学生讲解,学生们遇到的不能解决的,他都配合同学极力解决。最后祝愿瓮老师身体健康,全家幸福。

通过这次课程设计,我进一步熟悉了verilog hdl语言的结构,语言规则和语言类型。对编程软件的界面及操作有了更好的熟悉。在编程过程中,我们虽然碰到了很多困难和问题,到最后还是靠自己的努力与坚持独立的完成了任务。当遇到了自己无法解决的困难与问题的时候,要有耐心,要学会一步步的去找问题的根源,才能解决问题,还请教老师给予指导和帮助。这次实训给我最深的印象就是扩大自己的知识面,知道要培养哪些技能对我们的专业很重要。通过这次课程设计,培养了我们共同合作的能力。但是此次设计中参考了其他程序段实际思想,显示出我们在程序设计方面还有不足之处。

在此次实训的过程中,我了解到了要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力 。感谢学院给我们提供这次实训的机会,感谢瓮老师对我们的指导,他是为了教会我们如何运用所学的知识去解决实际的问题,此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

本次设计过程中得到我们老师的悉心指导。瓮老师多次询问设计进程,并为我们指点迷津,帮助我们理顺设计思路,精心点拨。瓮老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,并将积极影响我今后的学习和工作。在此诚挚地向瓮老师致谢。篇二:南京理工大学eda设计实验报告

摘 要

通过实验学习和训练,掌握基于计算机和信息技术的电路系统设计和仿真方法。要求:1.熟悉multisim软件的使用,包括电路图编辑、虚拟仪器仪表的使用和掌握常见电路分析方法。2.能够运用multisim软件对模拟电路进行设计和性能分析,掌握eda设计的基本方法和步骤。multisim常用分析方法:直流工作点分析、直流扫描分析、交流分析。掌握设计电路参数的方法。复习巩固单级放大电路的工作原理,掌握静态工作点的选择对电路的影响。了解负反馈对两级放大电路的影响,掌握阶梯波的产生原理及产生过程。

关键字:电路 仿真 multisim 负反馈 阶梯波

目 次

实验一„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 1 实验二„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 11 实验三„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 17 实验一 单级放大电路的设计与仿真

一、实验目的

1.设计一个分压偏置的单管电压放大电路,要求信号源频率5khz(峰值10mv) , 负载电阻5.1kω,电压增益大于50。 2.调节电路静态工作点(调节电位计),观察电路出现饱和失真和截止失真的输出

信号波形,并测试对应的静态工作点值。 3.调节电路静态工作点(调节电位计),使电路输出信号不失真,并且幅度尽可能

大。在此状态下测试:

① 电路静态工作点值;

② 三极管的输入、输出特性曲线和? 、rbe 、rce值; ③ 电路的输入电阻、输出电阻和电压增益; ④ 电路的频率响应曲线和fl、fh值。

二、实验要求

1.给出单级放大电路原理图。 2.给出电路饱和失真、截止失真和不失真且信号幅度尽可能大时的输出信号波形

图,并给出三种状态下电路静态工作点值。 3.给出测试三极管输入、输出特性曲线和? 、rbe 、rce值的实验图,并给出

测试结果。

4.给出正常放大时测量输入电阻、输出电阻和电压增益的实验图,给出测试结果

并和理论计算值进行比较。 5.给出电路的幅频和相频特性曲线,并给出电路的fl、fh值。 6.分析实验结果。

三、实验步骤

实验原理图:

饱和失真时波形:

此时静态工作点为:

所以,i(bq)=4.76685ua

i(cq)=958.06700ua

u(beq)=0.62676v u(ceq)=0.31402v 截止失真时波形:

此时静态工作点为:

所以,i(bq)=2.07543ua

i(cq)=440.85400ua

u(beq)=0.60519v u(ceq)=5.54322v 最大不失真时波形:篇三:eda实验总结报告 数字eda实验 实验报告

学院: 计算机科学与工程学院 专业: 通信工程 学号: 0941903207 姓名: 薛蕾 指导老师: 钱强

实验一 四选一数据选择器的设计

一、实验目的

1、熟悉quartus ii软件的使用。

2、了解数据选择器的工作原理。

3、熟悉eda开发的基本流程。

二、实验原理及内容

实验原理

数据选择器在实际中得到了广泛的应用,尤其是在通信中为了利用多路信号中的一路,可以采用数据选择器进行选择再对该路信号加以利用。 从多路输入信号中选择其中一路进行输出的电路称为数据选择器。或:在地址信号控制下,从多路输入信息中选择其中的某一路信息作为输出的电路称为数据选择器。数据选择器又叫多路选择器,简称mux。 4选1数据选择器:

(1)原理框图:如右图。

d0 、d

1、d

2、d3 :输入数据 a1 、a0 :地址变量

由地址码决定从4路输入中选择哪1路输出。

(2)真值表如下图:

(3)逻辑图

数据选择器的原理比较简单,首先必须设置一个选择标志信号,目的就是为了从多路信号中选择所需要的一路信号,选择标志信号的一种状态对应着一路信号。在应用中,设置一定的选择标志信号状态即可得到相应的某一路信号。这就是数据选择器的实现原理。

三.实验内容

1、分别采用原理图和vhdl语言的形式设计4选1数据选择器

2、对所涉及的电路进行编译及正确的仿真。电路图:

四、实验程序 library ieee; use ieee.std_logic_1164.all; entity mux4 is port( a0, a1, a2, a3 :in std_logic; s :in std_logic_vector (1 downto 0); y :out std_logic ); end mux4; architecture archmux of mux4 is begin y

五、运行结果

六.实验总结

真值表分析:

当js=0时,a1,a0取00,01,10,11时,分别可取d0,d1,d2,d3.篇四:eda实习报告

中国地质大学(武汉) 实习名称 :

专 业: 班级序号: 姓 名: 指导教师:

实验一 3/8 译码器的实现

一. 实验目的

1. 学习quartusⅱ 的基本操作; 2. 熟悉教学实验箱的使用; 3. 设计一个3/8 译码器; 4. 初步掌握vhdl语言和原理图的设计输入,编译,仿真和调试过程;

二. 实验说明

.本次实验要求应用vhdl语言实现一个3/8 译码器。3/8 译码器的逻辑功能如下

本实验要求使用vhdl语言描述3/8译码器,并在实验平台上面实现这个译码器。描述的时候要注意vhdl语言的结构和语法,并熟悉quartusⅱ的文本编辑器的使用方法。尝试使用不同的vhdl语言描述语句实现3/8译码器,并查看其rtl结构区别,理解不同描述方法对综合结果的影响。将程序下载到实验箱上分别用按键和led作为输入和输出对结果进行验证,进一步熟悉所用eda实验箱系统。所用器件eda实验箱、ep1k10tc100-3器件。

三 . 实验步骤

按照教学课件《quartus ii 使用方法》,学习quartusⅱ 软件的使用方法: 1.在windows 界面双击quartusⅱ 图标进入quartusⅱ环境; 2.单击file 菜单下的new project wizard: introduction 按照向导里面的介绍新

建一个工程并把它保存到自己的路径下面。) 3.单击file 菜单下的new,选择vhdl file,后单击ok,就能创建一个后缀名为.vhd (*.bdf)的文本(原理图)文件。此vhd文件名必须与设计实体名相同。另外,如果已经有设计文件存在,可以按file 菜单里面的open 来选择你的文件。 4.输入完成后检查并保存,编译。 5.改错并重新编译; 6.建立仿真波形文件并进行仿真。 单击 file 菜单下的 new, 选择 vector waveformfile,单击 ok,创建一个后缀名为*.vwf 的仿真波形文件,按照课件上的方法编辑输入波形,保存,进行仿真,验证仿真结果是否正确; 7.选择器件及分配引脚,重新编译; 8.根据引脚分配在试验箱上进行连线,使用 led 进行显示; 9.程序下载,观察实验结果并记录;

四. 实验要求

1.用vhdl语言编写3/8译码器; 2.编写3/8译码器模块的源程序; 3.在quartusii平台上仿真; 4.在实验板上面实现这个3/8译码器。

五、vhdl源程序: library ieee; use ieee.std_logic_1164.all; entity deco3to8 is port ( s:in std_logic_vector(2 downto 0);- -输入端3个端口 y:out std_logic_vector(7 downto 0));--输出端7个端口 end entity; architecture behave of deco3to8 is begin with s select y

通过在实验板上的操作,可以看到当改变s2,s1,s0的值时,对应的led灯会亮。 心得体会

在本次实验中我学会了用vhdl语言编写简单的程序,检查程序的错误,如何仿真程序以及如何用实验箱观察实验结果。在本次实验中我觉得软件应用仿真比较简单,只是实验箱不好用,找了好几个才找到一个能用的实验箱,浪费了好多时间。在以后的实习中一定要先找好好用的实验箱。

实验二 bcd 七段显示译码器实验

一. 实验目的

1.了解和熟悉组合逻辑电路的设计方法和特点; 2.掌握led显示器的工作原理; 3.设计一个bcd七段显示的译码器,并在实验箱上面实现你的译码器。

二. 实验说明 led数码显示器是数字系统实验里面经常使用的一种显示器件,因为它经常显 示的是十进制或十六进制的数,所以我们就要对实验里面所用到的二进制数进行译码,将它们转换成十进制的或是十六进制的数。led数码显示器分为共阴和共阳两种,本实验使用的是共阴的连接,高电平有效。输入信号为d0,d1,d2,d3,相应的输出8段为a、b、c、d、e、f、g、dp。它们的关系表格如下:

下图为译码器逻辑图,请按图进行连线。篇五:eda实训报告

课程名称 :指导教师 : 曹老师

班 级 : 10电子1班

姓 名 : 余振

日 期 : 8路彩灯控制器

一:实训题目************************ 二:实训内容************************ 三:实训目的************************ 四:实训过程************************ 五:实训环境************************ 六:实训总结************************ 下面就从这几个方面进行论述:

ⅰ:实训项目 :8路彩灯控制器的设计。

ⅱ:实训内容:

1、彩灯明暗变换节拍为0.25s和0.5s,两种节拍交替运行。

2、演示花型3种: (1)从左向右顺次序亮,全亮后逆次序渐灭; (2)从中间到两边对称地渐亮,全亮后仍由中间向两边灭; (3)8路灯分两半,从左向右顺次渐亮,全亮后则全灭。

ⅲ:实训目的:

1、熟练掌握模拟电路、数字逻辑电路的设计、分析、仿真及调试的方法。

2、掌握使用eda(电子设计自动化)工具设计模拟电路、数字电路的方法,了解系统设计的全过程。

3、熟练掌握multisim 2001软件的基本操作及绘制原理图和进行电路仿真的一般方法

4、通过对系统电路设计与制作,进一步巩固所学的理论知识,提高分析问题和解决问题的能力。

5、通过此次实训,引导学生提高和培养自身创新能力,为后续课程的学习,毕业设计制作以及毕业后的工作打下坚实的基础。·

ⅳ:实训过程

1. 设计方案:

总体方案设计如上图,其中振荡器产生一个时钟信号,然后控制器由这个时钟信号触发而产生已如“10000000”等的序列信号,信号通过二级管就可以控制灯的亮暗了。序列信号规律的不同便会产生不同的花型。彩灯控制器是以高低电平来控制彩灯的亮与灭。如果以某种节拍按一定规律改变彩灯的输入电平值,控制才等的亮与灭,即可以按预定规则就显示一定的花型。因此彩灯控制电路需要一个能够按一定规律输出不同高低电平编码信号的编码发生器,同时还需要编码发生器所要求的时序信号和控制信号。综上所述,彩灯控制器应该由定时电路、控制电路、编码发生器电路以及驱动电路组成。 2.电路方案论证: 74ls194具有双向移位,并行输入/输出,保持数据和请您功能,其中s1,s0为工作方式控制端,sl/sr为左移/右移数据输入端,d0.d1.d2.d3,为并行数据输入端,q0---q3依次为由低位到高位的4位输出端,当cr非等于零时,清零,无论其他输入如何,寄存器清零,由4 中工作方式:当cr非等于1时,s1=s2=0,且cp为低电平,保持功能q0---q3保持不变,且与cp,sr,sl信号无关。s1=0.s0=1(cp为高电

平)有一功能,从sr端串入数据给q0,然后按q0-q1-q2-q3依次右移。 s1=1,s0=0(cp为高电平)左移功能,从sl端线串入数据给q3,然后按q3-q2-q1-q0依次左移。s1=s0=1(cp为高电平),并行输入功能,一片74ls194,只能寄存4为数据,而这个实验是8 路彩灯,那么就需要用量片或多篇74ls194级联策划了个多位寄存器,由于74ls194功能齐全,在实际中得到广泛应用,该寄存器在工作控制端的作用下,能实现穿行输入并行输出的转换,当s0s1=00.01.10.11时,分别执行保持,右移,左移,并行输入操作,右移时,串行信号从地4位片的sr输入,左移时,串行信号从高4位片的sl输入。

第13篇:EDA学习心得

EDA 学习心得

姓名:贺鑫

学号:20081001164 班号:072085-10 在本学期短短5周的EDA学习中,我初步对这一新的领域有了一个较为系统的理解,也为我的专业学习打开了一个新的思路,那就是电子设计自动化(EDA)技术。

首先,通过对这门课程相关理论的学习,我掌握了EDA的一些基本的的知识,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快。实现这种进步的主要原因就是微电子技术和电子技术的发展。前者以微细加工技术为代表,目前已进入超深亚微米阶段,可以在几平方厘米的芯片上集成几千万个晶体管;后者的核心就是电子设计自动化EDA(Electronic Design Automatic)技术。

EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

其次,通过对课程的实验的学习,我对EDA的学习和理解有了更深刻的认识和体会。我们团队共四个人,做的是两层电梯控制器,作为这个实验的一员与负责人,我感到很有压力。因为只对课本知识的学习,我对实验做成功的把握不是很大。因为我们是机械专业,学习电的知识也主要是通过大二学的《电工学》 ,因此只能对数字逻辑与数字电路有初步的了解,而EDA是在数字电路发展到一定阶段的产物,因此学习起来也很费力。

然而,在我们团队的共同努力下,我们最终成功地完成了这个实验,包括时序仿真和硬件测试仿真,都取得了非常成功地效果。

在上实验课的时候,那个周六下午,整个实验室只有那寥寥几人,我很庆幸我是其中的一人,因为在那里我学习到了很多,我完成了上次实验没有完成的扫描显示的实验,也完成了步进电机控制器的实验,还在老师的指导下完成了梁祝音乐演示实验,最后在晚上我也去了实验室,和我们团队成员开始进行两层电梯控制器的设计,通过一个晚上的努力,我们最终把它给调试了出来。

通过实验,我激发了EDA学习的兴趣,也对这门课程有了更深的理解,对EDA设计软件Quarter Ⅱ的使用也更加熟练。老师给我们的材料中,用的是GAL器件,我们最终用的是FPGA器件,也就是EP1K10TC100—3芯片,我们分析了电梯在整个运行过程中的状态,并参考资料写出了状态图,然后根据状态图用有限状态机来实现了各个状态之间的转换,进而实现了对电梯的控制。

在设计过程中,我们遇到了很多困难,尤其是在电梯开门于关门那个自动控制方面,起初我想用一个延迟信号赋值语句解决这个问题,但是由于这个延迟在综合器里面不能得到体现,综合器在综合是会忽略after之后的延迟,因此我该用了一个计数器溢出的底层元件。通过元件例化语句实现在顶层文件中对其的调用。

在完成VHDL的编辑以后,进行编译,结果出现了很多错误,在我们细心的检查和排

查之下,最终将VHDL描述修改成功并且通过了编译。在编译过程中我了解到很多在书本上没有理解的知识。比如信号不能在多个并行进程中赋值,顺序语句必须在进程中才能描述等等。在时序仿真这一块我们也遇到了问题,起初我们没有考虑到信号赋值的延迟,也没有考虑到仿真延迟δ,取时钟周期为默认值10ns,这样仿真得到的结果就与预期的结果不符合,找到问题后我们采用了1us的始终周期,最终得到了想要的波形。

对这门课程的最大收获除了学习到了知识以外,更重要的是让我明白了一个道理:只要全身心的投入到一件事中,并且要有持之以恒的决心,就一定会有收获。有的人觉得自己做不出来,就网上搜一个了事,但是,放弃一次黑暗中摸索的经历,就放弃了一次成长的机会!如果你付出了,没有收获。那只能说,是付出的还不够多。

我想我对EDA的学习只能算是个入门,这个领域的发展空间非常大,应用范围也非常广泛,而且我相信在将来还会有更加广阔的应用前景。因此在以后的学习过程中,我不能因为课程学习的结束而结束了我对这个领域的探索,相反我会更加努力的去学习它。感谢老师孜孜不倦的教诲,让我不仅学到了知识,也学到了做人做事的一些道理,为我提供了很多帮助。在接下来的学习生涯中,我会继续努力,努力扎实地学习专业知识,实现自己的理想。

第14篇: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设计方面,向超高速、高密度、低功耗、低电压方面发展。

第15篇:EDA心得体会

EDA学习心得体会

大三时候开始了专业课的学习,其中EDA就是要学的一门专业课,课程刚开始的时候,对EDA技术很陌生,也感到很茫然,也非常没有信心,当接触到可编程器件的时候,看到大家同样感到很迷惘。首先,通过对这门课程相关理论的学习,我掌握了EDA的一些基本的的知识,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快。实现这种进步的主要原因就是微电子技术和电子技术的发展。前者以微细加工技术为代表,目前已进入超深亚微米阶段,可以在几平方厘米的芯片上集成几千万个晶体管;后者的核心就是电子设计自动化EDA(Electronic Design Automatic)技术,由于本门课程是一门硬件学习课程,所以实验必不可少。通过课程最后实验,我体会一些VHDL语言相对于其他编程语言的特点。

在接触VHDL语言之前,我已经学习了C语言,汇编语言,而相对于这些语言的学习,VHDL 具有明显的特点。这不仅仅是由于VHDL 作为一种硬件描述语言的学习需要了解较多的数字逻辑方面的硬件电路知识,包括目标芯片基本结构方面的知识更重要的是由于VHDL 描述的对象始终是客观的电路系统。由于电路系统内部的子系统乃至部分元器件的工作状态和工作方式可以是相互独立、互不相关的,也可以是互为因果的。这表明,在任一时刻,电路系统可以有许多相关和不相关的事件同时并行发生。因此,任何复杂的程序在一个单CPU 的计算机中的运行,永远是单向和一维的。因而程序设计者也几乎只需以一维的思维模式就可以编程和工作了。

在学习的过程中,我深深体会到,学习不单单要将理论知识学扎实了,更重要的是实际动手操作能力,学完了课本知识,我并没有觉得自己有多大的提高,感觉学到的很没用,我们现在学到的还很少,只是编写一些简单的程序。相反的,每次做完实验之后,都会感觉自己收获不少,每次都会有问题,因此,我认为在老师今后的教学当中,应当更加注重动手实验,把理论与实践很好的结合起来,才能使同学融会贯通。现在感觉到对这门课还只有很少的认识,所以希望很认真的续下去

第16篇:EDA课程设计

考试序号:28

自动打铃系统设计说明书

学 生 姓 名:周文江

号:14112502521

专 业 班 级:1102

报告提交日期:2013.11.26

湖 南 理 工 学 院 物 电 学 院

目录

一、题目及要求简介……………3 1.设计题目…………………3 2.总体要求简介……………3

二、设计方案说明……………3

三、系统采用器件以及模块说明………3 1.系统框图…………4 2.选择的FPGA芯片及配置………4 3.系统端口和模块说明…………5

四、各部分仿真结果………5

五、调试及总结………6

六、参考文献……7

七、附录………7

一、题目及要求简介

1、设计题目

设计一个多功能自动打铃系统

2、总体要求简介

① 基本计时和显示功能(24小时制显示),包括:

1.24小时制显示 2.动态扫描显示; 3.显示格式:88-88-88 ② 能设置当前时间(含时、分) ③ 能实现基本打铃功能,规定:

06:00起床铃,打铃5s

二、设计方案说明

本次设计主要采用Verilog HDL硬件描述性语言、分模块法设计的自动打铃系统。由于这次用的开发板提供的是50M晶振。首先要对时钟进行分频,当计时到2FA_F07F时完成1s分频,通过计时到60s产生分钟进位信号,再通过60分钟产生时钟进位信号。最后通过6个寄存器对时分秒进行锁存最终输出到8个数码管上完成显示。当显示时钟和默认闹钟时钟相等时,驱动打铃模块。通过key_mode,key_turn,key_change查看闹钟,时钟显示,调整时钟。

三、系统采用器件以及模块说明

1.系统框图如下:

:下如图框统系

2.选择的FPGA芯片及配置:本次系统设计采用的FPGA芯片是Alter公司生产的Cyclone II EP2C8Q208C8。该芯片是208个管脚,138个IO,并且具有两个内部PLL,而且内嵌乘法器,8K的逻辑门,资源相当丰富。完成这次自动打铃系统的设计总共消耗250个LE单元,22个IO口,131个寄存器。经过综合后,本系统最高能实现145M的运行速度。通过Quartus II 软件观察到内部的RTL图如下

3.系统端口和模块说明

(1)分频部分

分频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为1hz的信号,即为1S的计时信号。

(2)按键部分

按键key_mode--0为显示计时,1为闹钟显示,2为调整时间。 按键key_turn—0为调整小时,1为调整分钟。 按键key_change—每按一次加1 (3)计时部分

通过sec_L,sec_H,min_L,min_H,hour_L,hour_H 6个寄存器对时分秒进行锁存然后送入数码管显示

(4) 闹钟模块

当设定的闹钟时间和数码管上显示的时间相等时驱动闹钟,完成打铃,持续时间5s。

(5)数码管显示模块

显示模块是由8个位选8个段选构成的显示模块,利用人眼的余晖效果完成动态扫描,显示时间。

四、各部分仿真结果

测试文件如下:

module clock_tb; reg sysclk,rst_b; reg key_mode,key_turn,key_change; wire buzzer;

wire [7:0] led_sel,led_data; clock I_clock( .sysclk (sysclk),.rst_b (rst_b),.key_mode (key_mode), .key_change (key_change),.key_turn (key_turn),.buzzer (buzzer),.led_sel (led_sel),.led_data (led_data)); initial begin sysclk = 1\'b1; rst_b = 1\'b0; //复位信号

#30 rst_b = 1\'b1; end always #10 sysclk = ~sysclk; //输入的系统时钟,20ns的周期 endmodule

五、调试及总结

本次课程设计总共花费了四天左右的时间,设计了自动打铃系统。通过这次的设计更加熟悉了对EDA技术的了解和认识,在中也发现许多不足的地方。使用了自顶而下的设计方法,使得设计更加的简单和明了。在调试过程中,有些代码的设计不规范性,导致时序相当缓慢,甚至编译综合都会报错。在不断的修改下,发现时序电路和组合逻辑最好分开写,这样便于查错,和修改代码。毕竟Verilog HDL语言不同于C语言,不能以软件的思想来设计,而是要利用电路的思想来编程,这样可以更好的节省资源,使得时序也比较的简单明了。在以后的学习及程序设计当中,我们一定要倍加小心,在程序出现不正常运行的情况下要耐心调试,尽量做到精益求精。

最后通过这次EDA方面的课程设计, 提高了我们对EDA领域及通信电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力。有利于锻炼我们独立分析问题和解决问题的能力。

六、文献参考

[1] .王金明、左自强 编,《EDA技术与Verilog设计》科学出版社

2008.8 [2] .杜慧敏、李宥谋、赵全良 编,《基于Verilog的FPGA设计基础》 西安电子科技大学出版社 2006.2 [3] .韩彬 编,《从零开始走进FPGA世界》杭州无线电爱好者协会出版社 2011.8.20

七、附录(实物图及源码)

module clock(//Input

sysclk,rst_b,key_mode,key_change,key_turn,

//Output

buzzer,led_sel,led_data );

input sysclk,rst_b; //sysclk--global system clock,rst_b--global reset signal input key_mode;//mode choose .0--Timing function.1--Alarm clock function.2--adjust function input key_turn;//choose adjust minute or hour input key_change;//count add 1 output buzzer; //device buzzer output [7:0] led_sel;//led tube bit choose

output [7:0] led_data;//led_tube 8 bit data choose

parameter init_hour = 8\'h12; parameter init_min = 8\'h59; parameter init_sec = 8\'h50; //initial time :12:59:50 parameter init_alarm_hour = 8\'h06; parameter init_alarm_min = 8\'h30;//initial alarm time : 06:30:0 parameter Count_1s = 28\'h2FA_F07F; //count time 1s;

reg [7:0] sec; reg [7:0] min; reg [7:0] hour; reg [3:0] min_L; //minute low 4 bit reg [3:0] min_H; //minute high 4 bit reg [3:0] hour_L; //hour low 4 bit reg [3:0] hour_H; //hour high 4 bit reg [23:0] key_time; //pre key away shake reg key_mode_n; //pre key_mode next state reg key_change_n; //pre key_change next state reg key_turn_n; //pre key_turn next state wire key_mode_pre;//sure Button pre key_mode wire key_turn_pre; //sure button pre key_turn wire key_change_pre;//sure button pre key_change

always @ (posedge sysclk ) key_mode_n

always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) key_time

key_time

end

reg [1:0] mode_num; //key mode ..0--Timing function.1--Alarm clock function.2--adjust function always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) mode_num

mode_num

always @ (*) begin if(mode_num == 2\'h1)begin

min = init_alarm_min; hour = init_alarm_hour; end else begin

min = {min_H,min_L}; hour = {hour_H,hour_L}; end end

reg fm; //choose turn hour or minute always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) fm

fm

reg [27:0] time_cnt; ///count time reg [27:0] time_cnt_n; //count time next state always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) time_cnt

always @ (*) begin if(time_cnt == Count_1s) time_cnt_n

reg [3:0] sec_L; //second low 4 bit reg [3:0] sec_H; //second high 4 bit wire sec_cb; //second carry bit signal aign sec_cb = (sec_L == 4\'h9) && (sec_H == 4\'h5); always @ (posedge sysclk or negedge rst_b) begin if(!rst_b)begin

sec_L

sec_L

sec_L

sec_L

wire min_cb; //minute carry bit signal aign min_cb = (min_L == 4\'h9) && (min_H == 4\'h5); always @ (posedge sysclk or negedge rst_b) begin if(!rst_b)begin

min_L

min_L

min_L

min_L

min_L = min_L + 4\'h1; else if((fm) && (mode_num == 2\'h2) &&(key_change_pre) && (key_time ==

24\'h0) && (min_L == 4\'h9) && (min_H !=4\'h5)) begin

min_L = 4\'h0; min_H = min_H + 4\'h1; end else if((fm) && (mode_num == 2\'h2) &&(key_change_pre) && (key_time == 24\'h0) && (min_L == 4\'h9) && (min_H ==4\'h5)) begin

min_L = 4\'h0; min_H = 4\'h0; end end

always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) begin

hour_L

hour_L

hour_L

hour_L

hour_L

hour_L

hour_L

hour_L

24\'h0) && (hour_L == 4\'h3) && (hour_H ==4\'h2)) begin

hour_L

wire buzzer_en; aign buzzer_en = (init_alarm_min == {min_H,min_L}) && (init_alarm_hour == {hour_H,hour_L});

led_tube I_led_tube ( .sysclk (sysclk), .rst_b (rst_b), .scan_time (24\'h1F090), .data0 ({1\'h1,sec_L}), .data1 ({1\'h1,sec_H}), .data2 ({1\'h1,4\'hA}), .data3 ({1\'h1,min[3:0]}), .data4 ({1\'h1,min[7:4]}), .data5 ({1\'h1,4\'hA}), .data6 ({1\'h1,hour[3:0]}), .data7 ({1\'h1,hour[7:4]}), .led_data (led_data), .led_sel (led_sel) ); buzzer I_buzzer ( .sysclk (sysclk), .rst_b (rst_b), .buzzer_en (buzzer_en), .buzzer (buzzer) ); endmodule

第17篇:EDA 课程设计

《电子系统设计自动化》课程设计报告

学 院: 机电工程学院

题 目: 数字时钟电路设计 课 程: 《电子系统设计自动化》课程设计 专业班级: 电信10级2 班 学生姓名: 刘星 秦玉杰 王艳艳 学 号: 1004101035 1004101036 1004101038

完成日期:2013年 12 月 27 日

- 2

摘要:

EDA(Electronic Design Automation)电子设计自动化,就是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成用软件方式设计的电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。本次实习利用QuartusII为设计软件、VHDL为硬件描述语言,结合所学的数字电路的知识设计一个24时多功能数字钟,具有正常时、分、秒计时,动态显示,清零、快速校时校分、整点报时、花样显示等功能。利用硬件描述语言VHDL对设计系统的各个子模块进行逻辑描述,采用模块化的设计思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑分割、逻辑综合优化、逻辑布线、逻辑仿真,最终将设计的软件系统下载设计实验系统,对设计的系统进行硬件测试。

一、课程设计基本要求和任务

《EDA课程设计》是继《模拟电子技术基础》、《数字电子技术基础》课程后,电信专业学生在电子技术实验技能方面综合性质的实验训练课程,是电子技术基础的一个部分。 1.1 目的和任务

(1) 通过课程设计使学生能熟练掌握一种EDA软件(QUARTUSII)的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程,为以后进行工程实际问题的研究打下设计基础。

(2) 通过课程设计使学生能利用EDA软件(QUARTUSII)进行至少一 个电子技术综合问题的设计,设计输入可采用图形输入法或VHDL硬件描述语言输入法。 (3) 通过课程设计使学生初步具有分析、寻找和排除电子电路中常见 故障的能力。

(4) 通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、文理通顺的字迹端正的课程设计报告。 1.2 功能要求:

(1) 具有时、分、秒计数显示功能,以24小时循环计时。 (2) 时钟计数显示时有LED灯的花样显示。 (3) 具有调节小时、分钟、秒及清零的功能。 (4) 具有整点报时功能。

1.3 总体方框图:

本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。 1.4 设计原理:

数字钟电路设计要求所设计电路就有以下功能:时、分、秒计时显示,清零,时、分调节,整点报时及花样显示。分、秒计时原理相似,可以采用60进制BCD码计数器进计时;小时采用24进制BCD码进行计时;在设计时采用试验电路箱上的模式7电路,不需要进行译码电路的设计;所设计电路具有驱动扬声器和花样显示的LED灯信号产生。试验箱模式7的电路如图一所示:图一模式七实验电路图

1.5 性能指标及功能设计:

(1) 时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。

- 5

2.2 模块划分自顶向下分解

2.3 模块描述

时钟计时模块完成时、分、秒计数,及清零、调节时和分钟的功能。时、分、秒计数的原理相同,均为BCD码输出的计数器,其中分和秒均为六十进制BCD码计数器,小时为二十四进制BCD码计数器。设计一个具有异步清零和设置输出功能的六十进制BCD码计数器,再设计一个具有异步清零和设置输出功能的二十四进制计数器,然后将它们通过一定的组合构成时钟计时模块。 各个输入/输出端口的作用为:

(1) clk为计时时钟信号,reset为异步清零信号;

(2) sethour为小时设置信号,setmin为分钟设置信号; (3) daout[5„0]为小时的BCD码输出, daout[6...0]为秒和分钟的BCD码输出,enmin和enhour为使能输出信号。

(4) 在时钟整点的时候产生扬声器驱动信号和花样显示信号。由时钟计时模块中分钟的进行信号进行控制。当contr_en为高电平时,将输入信号clk送到输出端speak用于驱动扬声器,同时在clk的控制下,输出端lamp[2..0]进行循环移位,从而控制LED灯进行花样显示。输出控制模块有扬声器控制器和花样显示控制器两个子模块组成 2.4 顶层电路图

顶层文件是由四个模块组成,分别是时、分、秒计数器和报警的VHDL语言封装而成。经过锁定引脚再重新编译获得如下顶层原理电路图:

三、方案实现

3.1 各模块仿真及描述

(1) 秒计数器模块仿真图:将标准秒信号送入”秒计数器”,秒计数器采用60进制计数器,每累计60秒发出一个分脉冲信号,该信号将作为分计数器的时钟脉冲,daout代表秒输出。

(2) 分计数器电路仿真图:也采用60进制计数器,每累计60分钟,发出一个时脉冲信号,该信号将被送到时计数器,daout端口代表分钟输出

(3)小时计数器电路仿真图:时计数器采用12进制计时器,可实现对24小时累 计。每累计12小时,发出一个脉冲信号。

- 9

引脚配置完成后再进行一次全程编译,无误则可以下载到试验箱上进行硬件测试。硬件验证的方法如下:选择实验模式7;时钟脉冲clk与clock0(1024Hz)信号相连;键8和键5均为低电平,时钟正常计时,数码管1和2显示秒,数码管4和5显示分钟,数码管7和8显示小时;键8为高电平时,时钟清零;键5为高电平时,按下键7和键4进行调时调分操作;当时钟为整点的时候,三个发光二极管进行循环移位操作,同时扬声器发声。

五、心得体会

经过源程序的编辑、逻辑综合、逻辑适配、编程下载成功后,在EDA实验开发系统进行硬件验证时却发现实验结果不正确,扬声器无法发声。经检查,自己设计的管脚文件有错。将管脚锁定文件修改后,重新进行逻辑适配、编程下载成功后,实验结果仍然不正确,百思不得其解。无奈之下,决定重头开始排查每一步的细节,确定各个模块的功能完全实现并且顶层模块功能正确。修改之后,重新进行逻辑适配、编程下载验证,实验结果完全正确。

这次EDA课程设计历时两个星期,在整整两个星期的日子里,不仅巩固了以前所学过的知识,而且学到了很多书本上学不到的知识,同时锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,对未来有了更多的信心。这次课程设计,进一步加深了我对EDA的了解,使我对QuartusII的基本操作有所了解,使我对应用软件的方法设计硬件系统有了更加浓厚的兴趣。 通过这次课程设计,我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合,从实践中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中,我遇到许多问题,毕竟是第一次应用VHDL进行硬件电路系统的设计,许多EDA的知识还没有充分的掌握,遇到困难也是在所难免的,同时发现了自己的不足之处:学习知识表面化,没有深入了解它们的原理。 总的来说,这次设计的数字时钟电路还是比较成功的,尽管在设计中遇到了很多问题,最后在老师的辛勤指导、同学的帮助和自己不断思考下,终于迎刃而解,有点小小的成就感,觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。最后,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!

参考文献

[1] 崔健明.《电子电工EDA仿真技术》 高等教育出版社 2000年 [2] 卢杰,赖毅.《VHDL与数字电路设计》 科学出版社 2001年 [3] 潘松,黄继业.《EDA技术实用教程》 科学出版社 2002年 [4] 朱运利.《EDA技术应用》 电子工业出版社 2004年 [5] 张明.《VHDL实用教程》 电子科技大学出版社 1999年

[6] 彭介华.《电子技术课程设计与指导》 高等教育出版 1997年

- 11

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY minute IS PORT(clk,clk1,reset,sethour:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ENTITY minute ; ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0); SIGNAL enhour_1, enhour_2: STD_LOGIC; --enmin_1为59分时的进位信号 BEGIN --enmin_2由clk调制后的手动调时脉冲信号串 daout

3、时计数器模块的VHDL语言:

LIBRARY IEEE; use IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

- 14

IF(clk\'event and clk=\'1\')THEN IF(dain=\"0000000\")THEN speak=\"10\")THEN count1

循环点亮三只灯

第18篇:《EDA课程设计》

《EDA课程设计》

课程设计题目:

基于单片机的温湿度采集系统

名:

xxx

号:

xxxx

级:

xxxx

间:

2014.4.21~ 2013.5.5

点:

xxxxx

指 导

师:

xxxxx

一、电路原理图 ..................................................................................2

二、电路PCB图(或实物图) .........................................................2

三、电路效果图 ..................................................................................3

四、设计总结 ......................................................................................3 附录(单片机源代码) ......................................................................4

1

一、电路原理图

二、电路PCB图(或实物图)

2

三、电路效果图

四、设计总结

EDA的实验还是挺有趣的,比较讲究动手能力,当然也不能忽略团体合作。总的来说本次实验还是成功了,虽然每个环节都遇到了困难。在生成原理图的过程中,就曾把导线画成了Placeline而不是Placewire,还有芯片的引脚应该用NET符号而不是用文本符号,所以这些错误都导致我花在原理图上的时间多了点。而在生成PCB电路图的过程中遇到的困难则是自动布线之后,还有电源的几个脚需要手动布线,所以各个元件之间的位置要布置好,以免发生短路。腐蚀的时候,由于腐蚀的时间太长了,有些碳都化开了,导致里面的铜被腐蚀掉了,所以又为我的工作增加了困难。在焊接的时候,要注意元件的正负极,还要检测锡是否都与那些铜连接上了。最终把LED和

3 DHT11的程序烧进去就行了。

本次实验我还是能多多少少学到点什么的,总的来说还是希望能有多一点这样的实习。

附录(单片机源代码)

//51单片机控制温湿度传感器DHT11

LCD1602上显示当前机最小系统。 //LCD 读进去 写出来 #include #include typedef unsigned char BYTE; typedef unsigned int WORD; #define uint unsigned int

//定义无符号整型 #define uchar unsigned char typedef bit BOOL;

//此声明一个布尔型变量即真或假// uchar data_byte,num,i; uchar RH,RL,TH,TL,flag; uchar shuzi[4]; unsigned char code num1[11]={0xc0,0xf9,0xa4,0xb0,0x99,

4

0x92,0x82,0xf8,0x80,0x90,0x7f} ;

sbit dht=P2^4;

//dht11data端接单片机的P2^4口//

//***************

数************************************* void delay(uchar ms) //延时模块//延时1毫秒

{

}

void delay1()

//一个for循环大概需要8个多机器周期

//一个机器周期为1us晶振为12MHz也就是说本函数延时8us{

}

5 uchar i;

while(ms--)

for(i=0;i

uchar i;

for(i=0;i

P2=0x07;

P0=num1[shuzi[2]]; delay(1); // }

// if(flag==1) // {

P2=0x0b;

P0=num1[shuzi[3]]; delay(1); // } // if(flag==2) // {

P2=0x0d;

P0=num1[shuzi[0]]; delay(1); // } // if(flag==3)

6 // {

P2=0x0e; P0=num1[shuzi[1]]; delay(1); // } }

//**************************dht11

块*************************************// void start()//开始信号

{

dht=1;

delay1();

//主机发出8us高电平,开始信号开始发出 dht=0;

delay(25);

// 主机把总线拉低必须大于18ms

DHT11能检测到起始信号

dht=1;

//delay1();

//以下三个延时函数差不多为24usdelay1(); delay1();

20-40us

}

uchar receive_byte()

//接收一个字节 8位// {

uchar i,temp;

for(i=0;i

{

while(!dht);

//等待40-50us的低电平开始信号结束

delay1();

//开始信号结束之后延时26us-28us

delay1(); delay1();

temp=0;

//时间为26us-28usif(dht==1)

temp=1;

//如果26us-28us

\'0\'

数据为\'1\'

while(dht);

//

\'0\'为26us-28us

\'1\'为70us

} data_byte

//data_byte|=temp;

//接收每一位的数据,相或保存数据

return data_byte;

8 }

void receive() //接收数据// {

uchar T_H,T_L,R_H,R_L,check,num_check,i; start();

//开始信号//调用开始信号子函数

dht=1;

//主机设为输入判断从机DHT11响应信号

if(!dht)

//判断从机是否有低电平响应信号// {

while(!dht); //判断从机发出 40us 的低电平响应信号是否结束//

while(dht);

//判断从机发出 40us 的高电平是否结束 如结束则从机进入发送数据状态,主机进入数据接收状态

//两个while语句加起来就是DHT11的响应信号

R_H=receive_byte(); //湿度高位

调用接受一个字节的子函

R_L=receive_byte(); //湿度低位

T_H=receive_byte(); //温度高位

T_L=receive_byte(); //温度低位

check=receive_byte(); //校验位

//结束信号

dht=0;

//当最后一bit数据接完毕后主机拉低电平50us// for(i=0;i

delay1();

dht=1;

//总线由上拉电阻拉高进入空闲状态

num_check=R_H+R_L+T_H+T_L;

if(num_check==check) //判断读到的四个数据之和是否与校验位相同

{

RH=R_H;

RL=R_L;

TH=T_H;

TL=T_L;

check=num_check; }

shuzi[0]=RH/10; shuzi[1]=RH%10; shuzi[2]=TH/10; shuzi[3]=TH%10;

} }

void main()//主函数模块// {

10 while(1)

//进入死循环

{

receive();

//接收数据

display();

} }

第19篇:eda课程设计

数字钟

一、设计要求

设计一个数字钟,具体要求如下:

1、具有时、分、秒计数显示功能,以24小时循环计时。

2、具有清零、校时、校分功能。

3、具有整点蜂鸣器报时以及LED花样显示功能。

二、设计方案

根据设计要求,数字钟的结构如图8-3所示,包括:时hour、分minute、秒second计数模块,显示控制模块sel_clock,七段译码模块deled,报时模块alert。

三、VHDL程序

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.--library UNISIM;

--use UNISIM.VComponents.all;

entityddz is port(rst,clk: in std_logic; hour_h: out std_logic_vector( 6 downto 0); hour_l: out std_logic_vector( 6 downto 0); min_h: out std_logic_vector( 6 downto 0);

min_l: out std_logic_vector( 6 downto 0);

sec_h: out std_logic_vector( 6 downto 0);

sec_l: out std_logic_vector( 6 downto 0)

); endddz;

architecture Behavioral of ddz is signalcnt: std_logic_vector(15 downto 0); signalsec_h_in: std_logic_vector( 3 downto 0); signalsec_l_in: std_logic_vector( 3 downto 0); signalmin_h_in: std_logic_vector( 3 downto 0); signalmin_l_in: std_logic_vector( 3 downto 0); signalhour_h_in: std_logic_vector(3 downto 0); signalhour_l_in: std_logic_vector(3 downto 0);

signalclk_s,clk_m,clk_h: std_logic; begin proce(rst,clk) begin if rst=\'0\' then

sec_h_in\'0\');

sec_l_in\'0\');

clk_m

sec_l_in

ifsec_h_in=5 then

sec_h_in

clk_m

else

sec_h_in

clk_m

end if; else sec_l_in

clk_m

end if; end if; end proce;

proce(rst,clk_m) begin if rst=\'0\' then

-- min_h_in\'0\');

min_l_in\'0\'); -- clk_h

min_l_in

min_h_in

clk_m

end if; else min_l_in

end if; end if; end proce;

proce(rst,clk_n) begin if rst=\'0\' then

-- hour_h_in\'0\');

hour_l_in\'0\'); -- clk_h

hour_l_in

hour_h_in

clk_n

end if; else hour_l_in

end if; end if; end proce;

proce(sec_l_in) begin casesec_l_in is

when \"0000\" =>sec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_l

proce(sec_h_in) begin casesec_h_in is

when \"0000\" =>sec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_h

proce(min_l_in) begin casemin_l_in is

when \"0000\" =>min_lmin_lmin_l

when \"0011\" =>min_lmin_lmin_lmin_lmin_lmin_lmin_lmin_l

proce(min_h_in) begin casemin_h_in is

when \"0000\" =>min_hmin _h min _hmin _hmin _h min _hmin _hmin _hmin _hmin _hmin _h

end case; end proce;

proce(hour_l_in) begin casehour_l_in is

when \"0000\" =>hour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_l

proce(hour_h_in) begin casehour_h_in is

when \"0000\" =>hour_hhour_hhour_hhour_h hour _h hour _h hour _h hour _h hour _hhour_h hour _h

四、VHDL仿真结果

五、课程设计心得

通过这次课程设计,有效得巩固了课本所学的知识,而且通过上机仿真不断发现问题并及时改正,加深了我们对该课程设计的印象。这次课程设计,进一步加深了我对EDA的了解,使我对isp有了更深的了解,使我对应用软件的方法设计硬件系统有了更加浓厚的兴趣。 除此之外,我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合,从实践中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

总之,这次课程设计让我学会了很多,对今后的生活工作用处也颇深。

第20篇:EDA读后感

有关EDA书籍的读后感

在大二的下学期,我们做的数电课程设计用的EDA仿真工具,那时开始对EDA有了初步的认识。第一感觉就是EDA真的很方便,通过VHDL语言以及运行仿真在下载到芯片就可以模拟出相应硬件电路的区别。

在这学期我们开设了这们课,当然对EDA也有了更深的认识。EDA是电子设计自动化(Electronic Design Automation)的缩写。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。推荐三本有关EDA的书籍。《EDA技术及应用》本书主要讲述了EDA技术的特点、概念和数字系统的设计方法, VHDL语言的基本语法特点、程序结构、常用语句以及相关基础知识以及一些典型的基本门电路、组合逻辑电路和时序逻辑电路VHDL语言的实现方式。还有目前的主要的芯片制造商Aitera公司的综合开发软件的特点和使用,还有EDA技术在不同专业的工程应用案例以及一些综合实验教程。《数字电路EDA设计与应用》本书以数字电路的EDA设计为主线,结合丰富的实例,按照由浅入深的学习规律,逐步引入EDA技术和工具,图文并茂,重点突出。全书分为三部分。第一部分是基础篇,介绍EDA技术和硬件描述语言。第二部分是软件操作篇,主要介绍MAX+plus II和Quartus II软件工具的使用。第三部分是设计应用篇,通过大量典型的应用实例,使读者掌握数字系统EDA设计的方法和技巧。还有一本就是《EDA与可编程实验教程》本书主要就介绍一些EDA的实验教程,是不可或缺的实验性教程。

阅读的书籍:

1.《EDA技术及应用》 孙宏国,周磊编 北京机械工业出版社 2013

2.《数字电路EDA设计与应用》 聂小燕,鲁才编 北京人民邮电出版社 2010.04

3.《EDA与可编程实验教程》 罗中华,杨戈编 重庆大学出版社 2007

eda实习报告
《eda实习报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档