eda技术有什么特点

eda技术有什么特点,第1张

eda技术有什么特点

目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。下面是我收集的关于eda技术有特点,希望大家认真阅读!

1 软件硬化,硬件软化

软件硬化是指所有的软件设计最后转化成硬件来实现,用软件方式设计的系统到硬件系统的转换是由EDA开发软件自动完成的;硬件软化是指硬件的设计使用软件的方式来进行,尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。

2 自顶向下(top-down)的设计方法

传统的电路设计方法基本上都自向上的,即首先确定可用的元器件,然后根据这些器件进行逻辑设计,完成各模块后进行连接,最后形成系统。而后经调试、测量看整个系统是否达到规定的性能指标。整个设计过程将花费大量的时间与经费,且很多外在因素与设计者自身经验的制约,已经不适宜于现代数字系统设计。

基于EDA技术的设计方法正好相反,它主要采用并行工程和“自顶向下”的设计方法,使开发者从一开始就要考虑到产品生成周期的诸多方面,包括质量、成本、开发时间及用户的需求等。首先从系统设计入手,在顶层进行功能划分和结构设计,由于采用高级语言描述,能在系统级采用仿真手段验证设计的正确性。然后再逐级设计低层的结构,用VHDL、Verilog HDL等硬件描述语言对高层次的系统行为进行电路描述,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。

3 集设计、仿真和测试于一体

现代的EDA软件平台集设计、仿真、测试于一体,配备了系统设计自动化的全部工具:配置了多种能兼用和混合使用的逻辑描述输入工具;配置了高性能的逻辑综合、优化和仿真测试工具。电子设计师可以从概念、算法、协议等开始设计电子系统,可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。较以往的设计方法,大大提高了设计效率,降低了设计者的工作负担。

4 在系统可现场编程,在线升级

编程是把系统设计的程序化数据,按一定的格式装入一个或多个可编程逻辑器件的编程存储单元,定义内部模块的逻辑功能以及它们的相互连接关系。早期的可编程逻辑器件的编程需要将芯片从印制板上拆下,然后把它插在专用的编程器上进行的。目前EDA技术广泛采用的在系统可编程技术就是为克服这一缺点而产生的。

所谓系统内可配置是指可编程逻辑器件除了具有为设计者提供系统内可编程的能力,还具有将器件插在系统内或电路板仍然可以对其进行编程和再编程的能力。目前FPGA/CPLD器件为设计者提供系统内可再编程或可再配置能力,即只要把器件安装在系统电路板上,就可对其进行编程或再编程,使得系统内硬件的功能可以像软件一样地被编程来配置,这就为设计者进行电子系统设计和开发提供了可实现的最新手段。采用这种技术,对系统的设计、制造、测试和维护也产生了重大的影响,给样机设计、电路板调试、系统制造和系统升级带来革命性的变化。

5 设计工作标准化,模块可移置共享

近几年来,芯片复杂程度越高,对EDA的依赖也越高。 设计语言、EDA的底层技术及其接口的标准化,能很好地对涉及结果进行交换、共享及重用。

EDA设计工作的重要设计语言——硬件描述语言HDL已经逐步标准化。VHDL在1987年被IEEE采纳为硬件描述语言标准(IEEE 1076—1987),VHDL同时也是军事标准(454)和ANSI标准。Verilog HDL在1995年成为IEEE标准(IEEE 1364—1995),2001年发布了IEEE 1364—2001。作为两大被国际IEEE组织认定的工业标准硬件描述语言, VHDL和Verilog HDL为众多的EDA厂商支持,且移植性好。

数据格式的一致性通过标准保证。对EDA的底层技术、EDA软件之间的接口等采用标准数据格式,如EDIF网表文件是一种用于设计数据交换和交流的工业标准文件格式文件。这样,不同设计风格和应用的要求导致各具特色的EDA工具都能被集成在易于管理的统一环境之下,支持任务之间、项目之间、设计工程师之间的信息传输和工程数据共享,从而使EDA框架日趋标准化。并行设计工作和自顶向下设计方法也是构建电子系统集成设计环境或集成设计平台的基本规范。目前,主要的EDA系统都建立了框架结构,并且它们都遵循国际计算机辅助设计框架结构组织CFI(CAD Framework International)的统一技术标准。

因此,EDA技术代表了当今数字系统设计技术的最新发展方向。

;

课程设计内容与要求

1,用开关按键表示脉冲,每个脉冲代表100米,10个脉冲1公里,每公里14元,能同步显示里程和费用;

2,低于2公里5元计费,高于2公里总费用=起步费用+(里程-2公里)里程单价+

等候时间等后单价;

3,等候时间大于2分钟,按每分钟13元计费;

4,可以设定起步价和里程单价。

一、设计原理与技术方法:

包括:电路工作原理分析与原理图、元器件选择与参数计算、电路调试方法与结果说明;

软件设计说明书与流程图、软件源程序代码、软件调试方法与运行结果说明。

根据设计要求,系统的输入信号clk,计价开始信号start,等待信号stop,里程脉冲信号fin。系统的输出信号有:总费用数C0—c3,行驶距离k0—k1,等待时间m0—m1等。系统有两个脉冲输入信号clk_750k,fin,其中clk_750k将根据设计要求分频成14hz,15hz和1hz分别作为公里计费和超时计费的脉冲。两个控制输入开关start,stop;控制过程为:start作为计费开始的开关,当start为高电平时,系统开始根据输入的情况计费。当有乘客上车并开始行驶时,fin脉冲到来,进行行驶计费,此时的stop需要置为0;如需停车等待,就把stop变为高电平,

并去除fin输入脉冲,进行等待计费;当乘客下车且不等待时,直接将start置为0,系统停止工作;价格开始归为起步价50元。

整个设计由分频模块,计量模块,计费模块,控制模块和显示模块五个部分组成。

其中计量模块是整个系统实现里程计数和时间计数的重要部分;控制模块是实现不同计费方式的选择部分,根据所设计的使能端选择是根据里程计费还是根据等待时间计费,同时设计通过分频模块产生不同频率的脉冲信号来实现系统的计费。计量模块采用1hz的驱动信号,计费模块采用14hz,13hz的驱动信号;计量模块每计数一次,计量模块就实现14次或者13次计数,即为实现计时的13元/min,计程时的14元/km的收费。组成框图如下所示:

1百进制模块:

实现百米脉冲的驱动信号,元件框图如图3所示:

图3 百进制模块框图

源程序如下:

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_unsignedall;

entity baijinzhi is

port(start,clk2: in std_logic; --秒脉冲

a: out std_logic_vector(3 downto 0));

end baijinzhi;

architecture rt1 of baijinzhi is

signal count_1:std_logic_vector(3 downto 0);

begin

a<=count_1;

process(start,clk2)

begin

if(start='0')then

count_1<="0000";

elsif(clk2'event and clk2='1')then

if(count_1="0111")then

count_1<="0000";

else

count_1<=count_1+'1';

end if;

end if;

end process;

end rt1

2计费模块

; 实现里程和等候时间的计费并输出到显示,元件框图4如下:

图4 计费模块框图

源程序如下:

Library IEEE;

use IEEEstd_logic_1164all;

use IEEEstd_logic_arithall;

use IEEEstd_logic_unsignedall;

entity jifei is

port(clk2:in std_logic; --计费驱动信号

start:in std_logic; --计费开始信号

c0,c1,c2,c3:buffer std_logic_vector(3 downto 0));

end jifei;

architecture rt1 of jifei is

begin

process(clk2,start)

begin

if start='0'then c3<="0000";c2<="0000";c1<="0101";c0<="0000"; --起步价5元

elsif clk2'event and clk2='1'then

if c0="1001" then c0<="0000";

if c1="1001" then c1<="0000";

if c2="1001" then c2<="0000";

if c3="1001" then c3<="0000";

else c3<=c3+1;

end if;

else c2<=c2+1;

end if;

else c1<=c1+1;

end if;

else c0<=c0+1;

end if;

end if;

end process;

end rt1;

3公里模块

实现历程的计数和输出计费脉冲,元件框图5如下:

图5 公里模块框图

源程序如下:

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_unsignedall;

entity gongli is

port(clk1,start: in std_logic; --百米脉冲

k1,k2,k3,k4: out std_logic_vector(3 downto 0); --里程显示

temp2 : out std_logic);

end gongli;

architecture rt1 of gongli is

signal count_1: std_logic_vector(3 downto 0);

signal count_2: std_logic_vector(3 downto 0);

signal count_3: std_logic_vector(3 downto 0);

signal count_4: std_logic_vector(3 downto 0);

begin

k1<=count_1;

k2<=count_2;

k3<=count_3;

k4<=count_4;

process(start,clk1)

begin

if(start='0')then

count_1<="0000";

count_2<="0000";

count_3<="0000";

count_4<="0000"; ---公里清零

elsif(clk1'event and clk1='1')then

if(count_1="1001")then --公里计数器

count_1<="0000";count_2<=count_2+1;temp2<='1';

if(count_2="1001")then

count_2<="0000";count_3<=count_3+'1';

if(count_3="1001")then

count_3<="0000";count_4<=count_4+'1';

end if;

end if;

else

count_1<=count_1+'1';temp2<='0';

end if;

end if;

end process;

end rt1;

4输出模块

实现所有数据的输出,元件框图6如下:

图6 输出模块框图

源程序如下:

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_unsignedall;

entity shuchu is

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

e: out std_logic_vector(6 downto 0));

end shuchu;

architecture rt1of shuchu is

begin

process

begin

case y is

when"0000"=>e<="0111111";

when"0001"=>e<="0000110";

when"0010"=>e<="1011011";

when"0011"=>e<="1001111";

when"0100"=>e<="1100110";

when"0101"=>e<="1101101";

when"0110"=>e<="1111101";

when"0111"=>e<="0000111";

when"1000"=>e<="1111111";

when"1001"=>e<="1100111";

when others=>e<="0000000";

end case;

end process;

end rt1;

5显示模块

实现所有数据的显示,元件框图7如下:

图7 显示模块框图

源程序如下:

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_unsignedall;

entity xianshi is

port(start: in std_logic;

a:in std_logic_vector(3 downto 0); --选择信号

c1,c2,c3,c4,out1,out2,out3,out4:in std_logic_vector(3 downto 0); --里程显示,时间显示输入

y:out std_logic_vector(3 downto 0)); --里程显示,时间显示输出

end xianshi;

architecture rt1 of xianshi is

begin

process

begin

if(start='0')then

y<="0000";

else case a is

when "0000"=> y<=c1 ;

when "0001"=> y<=c2 ;

when "0010"=> y<=c3 ;

when "0011"=> y<=c4 ;

when "0100"=> y<=out1 ;

when "0101"=> y<=out2;

when "0110"=> y<=out3 ;

when "0111"=> y<=out4;

when others =>y<= "0000";

end case;

end if;

end process;

end rt1;

6dian模块

图8 dian模块框图

源程序如下:

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_unsignedall;

entity dian is

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

e: out std_logic);

end dian;

architecture rt1 of dian is

begin

process

begin

case a is

when "0001"=>e<='1';

when "0101"=>e<='1';

when others=>e<='0';

end case;

end process;

end rt1;

三、中各个模块设计分析

系统总体顶层框图如下:

系统总体顶层框图

程序最终功能实现波形仿真

1 分频模块

由于实验箱上没有14hz和13hz的整数倍时钟信号,因此采用频率较大的750khz进行分频,以近似得到14hz,13hz和1hz的时钟频率。通过以上三种不同频率的脉冲信号实行出租车行驶,等待两种情况下的不同计费。模块元件如下:

分频模块框图

源程序如下:

Library IEEE;

use IEEEstd_logic_1164all;

use IEEEstd_logic_arithall;

use IEEEstd_logic_unsignedall;

entity fenpin is

port(clk_750k:in std_logic; --系统时钟

clk_14:buffer std_logic; --14分频

clk_13:buffer std_logic; --13分频

clk_1 : buffer std_logic); --1分频

end fenpin ;

architecture rt1 of fenpin is

signal q_14:integer range 0 to 53570; --定义中间信号量

signal q_13:integer range 0 to 57691;

signal q_1:integer range 0 to 749999;

begin

process(clk_750k)

begin

If(clk_750k' event and clk_750k='1')then

If q_14=53570 then q_14<=0;clk_14<=not clk_14;

else q_14<=q_14+1;

end if; --得14hz频率信号

If q_13=57691 then q_13<=0;clk_13<=not clk_13;

else q_13<=q_13+1;

end if; --得13hz频率信号

If q_1=749999 then q_1<=0;clk_1<=not clk_1;

else q_1<=q_1+1;

end if; --得1hz频率信号

end if;

end process;

end rt1;

2 计量模块

计量模块主要完成计时和计程功能。

计时部分:计算乘客的等待累积时间,当等待时间大于2min时,本模块中en1使能信号变为1;当clk1每来一个上升沿,计时器就自增1,计时器的量程为59min,满量程后自动归零。

计程部分:计算乘客所行驶的公里数,当行驶里程大于2km时,本模块中en0使能信号变为1;当clk每来一个上升沿,计程器就自增1,计程器的量程为99km,满量程后自动归零。

元件框图为:

计量模块框图

计量模块仿真波形为:

源程序如下:

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_arithall;

use ieeestd_logic_unsignedall;

entity jiliang is

port(start:in std_logic; --计费开始信号

fin:in std_logic; --里程脉冲信号

stop:in std_logic; --行驶中途等待信号

clk1:in std_logic; --驱动脉冲

en1,en0:buffer std_logic; --计费单价使能信号

k1,k0:buffer std_logic_vector(3 downto 0); --行驶公里计数

m1,m0:buffer std_logic_vector(3 downto 0)); --等待时间计数

end jiliang;

architecture rt2 of jiliang is

signal w:integer range 0 to 59; --计时范围0~59

begin

process(clk1)

begin

if(clk1'event and clk1='1')then

if start='0' then

w<=0;en1<='0';en0<='0';m1<="0000";

m0<="0000";k1<="0000";k0<="0000";

elsif stop='1' then --计时开始信号

if w=59 then

w<=0;

else w<=w+1;

end if;

if m0="1001" then

m0<="0000";

if m1="0101" then

m1<="0000";

else m1<=m1+1;

end if;

else m0<=m0+1;

end if;

if stop='1' then en0<='0';

if m1&m0>"00000001" then en1<='1'; --若等待时间大于2min则en1置1

else en1<='0';

end if;

end if;

elsif fin='1' then --里程计数开始

if k0="1001" then k0<="0000";

if k1="1001" then k1<="0000"; --计程范围0~99

else k1<=k1+1;

end if;

else k0<=k0+1;

end if;

if stop='0' then

en1<='0';

if k1&k0>"00000001" then

en0<='1'; --若行使里程大于2km,则en0置1

else en0<='0';

end if;

end if;

end if;

end if;

end process;

end rt2;

3 控制模块

本模块主要是通过计量模块产生的两个不同的输入使能信号en0,en1,对每个分频模块输出的14hz,13hz的脉冲进行选择输出的过程;本模块实现了双脉冲的二选一;最终目的为了计费模块中对行驶过程中不同的时段进行计价。

模块元件如下:

控制模块框图

控制模块仿真波形为:

源程序如下:

Library IEEE;

use IEEEstd_logic_1164all;

use IEEEstd_logic_arithall;

use IEEEstd_logic_unsignedall;

entity kongzhi is

port(en0,en1:in std_logic; --使能选择信号

clk_in1:in std_logic; --14分频输入信号

clk_in2:in std_logic; --13分频输入信号

clk_out:out std_logic); --输出信号

end kongzhi;

architecture rt3 of kongzhi is

begin

process(en0,en1)

begin

if en0='1' then --实现二选一功能

clk_out<=clk_in1;

elsif en1='1' then

clk_out<=clk_in2;

end if;

end process;

end rt3;

4计费模块

当计费信号start一直处于高电平即计费状态时,本模块根据控制模块选择出的信号从而对不同的单价时段进行计费。即行程在2km内,而且等待累计时间小于2min则为起步价5元;2km外以每公里14元计费,等待累积时间超过2min则按每分钟13元计费。c0,c1,c2,c3分别表示费用的显示。

模块元件为:

计费模块框图

计费模块仿真波形为:

源程序如下:

Library IEEE;

use IEEEstd_logic_1164all;

use IEEEstd_logic_arithall;

use IEEEstd_logic_unsignedall;

entity jifei is

port(clk2:in std_logic; --计费驱动信号

start:in std_logic; --计费开始信号

c0,c1,c2,c3:buffer std_logic_vector(3 downto 0));

end jifei;

architecture rt4 of jifei is

begin

process(clk2,start)

begin

if start='0'then c3<="0000";c2<="0000";c1<="0101";c0<="0000"; --起步价5元

elsif clk2'event and clk2='1'then

if c0="1001" then c0<="0000";

if c1="1001" then c1<="0000";

if c2="1001" then c2<="0000";

if c3="1001" then c3<="0000"; --计价范围0~9999

else c3<=c3+1;

end if;

else c2<=c2+1;

end if;

else c1<=c1+1;

end if;

else c0<=c0+1;

end if;

end if;

end process;

end rt4;

5显示模块

显示模块完成计价,计时和计程数据显示。计费数据送入显示模块进行译码,最后送至以百元,十元,元,角为单位对应的数码管上显示。计时数据送入显示模块进行译码,最后送至以分为单位对应的数码管上显示。计程数据送入显示模块进行译码,最后送至以km为单位的数码管上显示。

模块元件为:

显示模块框图

源程序如下:

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_unsignedall; --定义库包

entity xianshi is --定义实体

port(

clk_scan:in std_logic; --扫描时钟信号端口设置

c3,c2,c1,c0:in std_logic_vector(3 downto 0); --总费用输入端口

k0,k1:in std_logic_vector(3 downto 0); --里程输入端口

m0,m1:in std_logic_vector(3 downto 0); --等待时间输入端口

sel:out std_logic_vector(2 downto 0); --控制数码管位选信号的扫描信号输出端口

led:out std_logic_vector(6 downto 0); --数码管的控制端口

led_dp:out std_logic --数码管的小数点输出端口

);

end xianshi;

architecture rt5 of xianshi is

signal duan:std_logic_vector(6 downto 0); --数码显示管中间变量

signal shuju:std_logic_vector(3 downto 0); --选择输入端的中间变量

signal cnt:std_logic_vector(2 downto 0); --控制数码管的中间变量

signal xiaodian:std_logic; --小数点的中间变量

begin

process(clk_scan) --开始进程

begin

if clk_scan'event and clk_scan='1' then

cnt<=cnt+1; --每有一个扫描信号上升沿实现加1扫描

end if;

end process; --结束进程

process(cnt) --开始进程(选择扫描显示数码管)

begin

case cnt is --扫描时给每个数码管赋值

when "000"=>shuju<=c0;

when "001"=>shuju<=c1;

when "010"=>shuju<=c2;

when "011"=>shuju<=c3;

when "100"=>shuju<=k0;

when "101"=>shuju<=k1;

when "110"=>shuju<=m0;

when "111"=>shuju<=m1;

when others=> null;

end case;

if (cnt="001" or cnt="110")

then xiaodian<='1'; --在里程和总费用的个位处显示小数点

else xiaodian<='0';

end if;

end process; --结束进程

process(shuju) --开始进程(译码显示)

begin

case shuju is

when "0000"=>duan<="0111111"; --0

when "0001"=>duan<="0000110"; --1

when "0010"=>duan<="1011011"; --2

when "0011"=>duan<="1001111"; --3

when "0100"=>duan<="1100110"; --4

when "0101"=>duan<="1101101"; --5

when "0110"=>duan<="1111101"; --6

when "0111"=>duan<="0000111"; --7

when "1000"=>duan<="1111111"; --8

when "1001"=>duan<="1101111"; --9

when others=>null;

end case;

end process;

sel<=cnt;

led<=duan;

led_dp<=xiaodian;

end rt5;

二、课程设计工作记录:

包括:设计步骤与时间安排、调试步骤与时间安排、课题完成结果说明

2课题完成结果说明:

此计费器能实现起步价是5元;实现实验要求的1公里计费一次单价,行驶公里大于2km时每公里按14元计费并能显示里程和总共的费用。当行驶了6公里,等待了4分钟时,费用显示为158元。与计算公式总费用=起步费用+(里程-2公里)里程单价+等候时间等后单价;即158=5+(6-2)14+413。实验结果与理论结果完全一致,实验设计成功。

摘 要计算机组成与结构实验课程是计算机专业以及相关专业学生要学习的一门必修课程,在这门课程中应用EDA技术进行教学,不仅能加深学生对计算机组成与结构课程的理解,也将有利于提高学生进行自主学习的能力以及创新的综合设计能力。正是符合了该课程的预期目的。

关键词计算机组成与结构;EDA技术;实验;应用

计算机及其相关专业的学生在学习过程中,除了要对理论知识加以了解,更重要的是要提升自己的动手能力。计算机组成与结构实验教学,就是计算机专业学生的必修课,通过课程设计把理论知识运用到实践中,可以起到拓展知识的作用。

一、EDA技术概述

EDA也就是电子设计自动化,EDA技术的发展经历了计算机辅助设计、计算机辅助制造、计算机辅助测试以及计算机辅助工程。EDA技术的工具就是计算机,在EDA软件平台上,设计者常常用硬件描述语言HDL来完成具体的课程设计文件,然后再在计算机平台上自动完成逻辑编译、分割、优化、布局、仿真等多个步骤。

EDA技术最大的优势在于用软件的方法来实现硬件的实际功效。一项设计最重要的部分是仿真和调试,采用EDA技术进行设计时,从设计的高层次上对设计进行全局纵览,有助于早期改造结构设计上的毛病,避免工作量的增加,也可以减少进行逻辑功效仿真的工作量,增加设计的成功率。

二、将EDA技术应用于计算机组成与结构课程设计

计算机是一个典型的复杂数字系统,如果在计算机设计系统开发中加入EDA技术的软硬件设计平台,不仅可以提高系统设计与调试的敛率,也可以节约硬件开发成本,缩短设计周期。因此在计算机组成与结构的实践教学中,要不断提高学生利用现代化的电子技术手段进行设计的能力。当然,EDA技术将成为计算机组成与结构实验教学的发展方向。

(一)课程的实施方案

课程设计是要完成模型计算机的设计以及FPGA的实现,而课程实验则是用来验证计算机的各个组成部件以及其具体的逻辑功能的。这两种课程内容都是为了让学生能够掌握计算机的硬件系统中各个部件的具体组成原理、逻辑实现方法及其具体的设计方法,从而建立一种整体的概念,提高学生在学习过程中进行独立分析设计的能力。计算机组成与结构的课程设计中运用了多门课程,比如计算机组成原理、VHDL、汇编语言程序设计等,这些课程都能对学生的自学能力有很好的提高。因为该课程设计不仅在理论上要求学生有扎实的理论基础,在实践上则要求学生具有电路分析与设计、能进行完整实验的能力。

(二)课程设计的内容

计算机组成与结构实验教学中,进行课程设计的内容主要有以下几个方面。首先是进行系统的总体设计,画出模型机的数据通路框图;其次是设计微程序控制器或者硬联线控制器的逻辑结构框图;开始设计机器指令格式和指令系统;由给出的课程题目和设计指令系统来编写相应的汇编语言,进行仿真等。

三、将EDA技术应用于计算机组成与结构课程实验

进行课程设计之后就可以进行具体的课程实践。在进行课程实践之前,要掌握具体的设计方法。计算机的CPU包含基本的功能模块以及与基本功能模块相连的数据通路。在进行课程设计实践时要掌握基本功能模块的具体功能以及各自的特点,再对每个模块进行设计、调试、软件仿真和硬件设计等。计算机组成与结构课程设计实验中采用的CPU采用大多是单总线系统结构的16位CISC CPU,EDA软件大多是可编程逻辑器件设计工具软件。

(一)基本模犁计算机的设计

在具体的课程设计中,为了保证清晰的系统结构,一般在系统的顶层结构采用原理图输入法,而在其他的模块都采用VHDL语言进行设计。对各个模块进行处理时要在文本编辑器中输入每一个单元模块所对应的VHDL源程序,并且要对各个源程序进行编译,可以产生相应的图元,供顶层的电路调用使用。各个模块的图元可以生成图元库,运用EDA技术进行实验课程,很重要的一步就是要进行软件仿真,而仿真的元器件就来源于图元库。在图形编辑器中可以对图元库中的各种图元进行调用,再根据数据通路的总体框架图连接成顶层电路图,就可以进行电路的仿真。计算机组成与结构实验所设计的CISC模型机的顶层电路图中有很多基本器件模块,比如时序信号发生器、程序计数器、算术逻辑运算单元、移位寄存器、指令寄存器、比较器、地址寄存器、一个控制单元等。而这些模块也共用一组16位的三态数据总线。

系统结构中的存储模块是一个重要的组成部分,存储元件由嵌入式阵列块构成,通过调用宏模块并设置模块相关的参数来实现存储功能。系统的各个部分都承担了不同的功能,其中,存储CPU主要是对指令和数据进行执行,具体的过程是处理器从存储元件中读取相应的指令,CPU再执行指令来运行下行的各种程序,整个过程中的指令都被存储在指令寄存器中。译码过程由控制单元完成,控制单元主要是控制相应的信号进行相互作用,并且控制各个处理单元来执行这些指令。

系统结构中的控制模块其实是一个状态机,它主要控制CPU的各项动作之间的顺序,比如取指令、译码、执行指令,控制模块进行 *** 作时要针对各个动作发出具体的时序控制信号,使得计算机内部的各个动作都能进行协调的工作,进而完成各个指令的具体功能。这种方法与微程序设计方法不同,微程序设计法主要在控制存储器中写入微指令,通过控制微程序来执行具体的控制指令。

(二)软件设计

当系统CPU得到一个复位信号后,系统即开始进行复制 *** 作,复位信号是使CPU内部状态复位的一个信号 *** 作。一般说来,系统的每个寄存器都有不同的功能,寄存器1主要存放模块的的起始地址,寄存器2主要存放系统目标区的起始地址,而寄存器6则主要存放被复制模块的末地址。在具体的 *** 作过程中要判断数据模块的复制工作是否已经结束,若已经满足结束条件则可以停止运行,否则要继续记数直至数据模块复制完成。

将设计的程序输入并且进行编译之后,还有一个重要的步骤就是仿真,仿真也是对设计进行验证的一个重要步骤,若在仿真中发现不符合要求的地方,则要及时找出原因进行改正,以保证最终结果的正确性。

结语

计算机组成与结构课程是锻炼学生积极思考以及提升其思维能力的重要课程,不同的设计对象和内容导致设计的具体内容完全不同,这也考验了学生独立思考的能力,由于EDA技术与计算机输入技术、逻辑编程和仿真等方面都有紧密的联系,而且在硬件实验之后有具体的图像可以进行对比,因此在实验教学中具有很好的灵活性和可 *** 作性。也能提高学生进行软件开发的能力,可以达到课程设计的效果。

参考文献

[1]陈智勇计算机原理课程设计的改革与实践[J]电气电子教学学报,2005,27(5):71—73

[2]周华,王斐EDA技术的特点与发展趋势[J]西安航空技术高等专科学校学报,2009(03):98-99

[3]张亮应用EDA技术改革“计算机组成原理”课程设计[J]计算机教育,2009(19)::753

module contr_1(lod,clk,aq,qa,d); //模块开始

input[7:0] aq; //输入单字节aq

input clk; //输入时钟信号

output reg[7:0] qa; //输出8为寄存器类型

output reg[11:0]d; //输出12位寄存器类型

output reg lod; //输出寄存器类型

reg [1:0] qc; //2为寄存器类型qc

initial begin qa='h19;d='b001100001100;end //初始化 qa、d

always @(negedge clk ) // 时钟下降沿执行本alway下面的语句

begin if (aq==0) lod=0; //

else lod=1; end //结束本进程

always @(negedge lod ) //LOD下降沿执行本alway下面的语句

begin qc=qc+1; //得到qc的值

case (qc) //执行CASE语句

0 :begin qa='h19;d='b001100001100;end //qc=0

1 :begin qa='h03;d='b010100010100;end //qc=1

2 :begin qa='h09;d='b100001100001;end //qc=2

3 :begin qa='h03;d='b100010100010;end //qc=3

default :qa='h00; 其他值

endcase //结束case

end //结束本进程

endmodule //结束模块

以上就是关于eda技术有什么特点全部的内容,包括:eda技术有什么特点、EDA课程设计,用VHDL编程做出租车计费器、EDA技术应用于计算机组成与结构实验教学|计算机组成与结构等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10119277.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存