1、电子线路实训实验报告电子线路实训(CPLD与电子CAD)报告 电子线路(CPLD与电子CAD电子线路实训(CPLD与CAD)是我们电气学院教学计划很重要的实践性教学环节之一。在学生学完模拟电子技术和数字电子技术之后,通过这一课程的训练实习环节,更进一步加强和巩固学生所学内容的基本知识,更重要是掌握电子系统线路的设计方法和要求,使学生了解和掌握所学专业工作要求和特点。对此。我们主要学习了一下内容:一VHDL中的进程.信号.变量1. VHDL的含义 VHSIC (Very High Speed Integrated Circuit)HardwareDescriptionLanguage 2. VH
2、DL的一些主要特点(1) 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力 (2)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能(3)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表(4)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计 (5)VHDL丰富的仿真语句和库函数,使得在设计的早 期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟 3. VHDL:VHDL主要用于描述数字系统的结构、行为、功能
3、和接口。除了含有许多具有硬件特征的语句外,VHDL的语言格式和描述方法以及语法和一般的计算机高级语言类似。4 .VHDL语言中的进程:进程(process),进程是最具VHDL特色的语句,是VHDL中执行语句的基本单元,一个VHDL程序的仿真中执行的所有操作都分割为单个或多个进程。 5. VHDL的属性函数类属性 信号属性函数属于函数类属性,用来返回有关信号行为功能的信息 典型:event ,它的值为布尔型,如果信号有变化,则其取值为True,否则为False。利用此属性可以判断时钟是否发生。 时钟边沿表示: 如果定义:SIGNAL clk: IN std_logic; 则:clkevent
4、AND clk=1 表示时钟变化了, 且为上升边沿 clkevent AND clk=0表示时钟的下降沿. 进程(1)进程:VHDL中最重要的语句,具有并行和顺序行为的双重性进程和进程语句之间是并行关系进程内部是一组连续执行的顺序语句进程语句与构造体中的其余部分进行信息交流是靠信号完成的PROCESS为一无限循环语句进程必须由敏感信号的变化来启动(对于表中列出的任何信号的改变,都将启动进程,执行进程内相应顺序语句)(2)基本格式: 进程标号: PROCESS (信号敏感表) IS说明区BEGI(3)进程语句程序: LIBRARY ieee;USE ieee.std_logic_1164.all
5、;ENTITY yl_9_10 IS PORT(a,b,c,d:IN Std_Logic;sel:IN Std_Logic_Vector(1 downto 0);y,z:OUT Std_Logic);END yl_9_10;ARCHITECTURE logic OF yl_9_10 ISBEGINif_label: PROCESS(a,b,c,d,sel)BEGINIF sel=00 THEN y=a;ELSIF sel=01 THEN y=b;ELSIF sel=10 THEN y=c;ELSE yzzzzz=0;END CASE;END PROCESS case_label;END log
6、ic;(4)波形仿真 .信号(1)可代表连线、内连元件或端口。用“=”来给信号赋值(2)信号:信号是电子电路内部硬件连接的抽象,它可以作为实体中并行语句模块间交流的通道;信号的说明通道常是在ARCHITECTURE.PACKAGE.ENTITY中进行的。 信号定义语句格式与变量的定义非常相似,信号定义也可以设置初始值。信号说明语句的格式为:SIGNAL信号名,数据类型;约束条件:=表达式。(3)信号实验程序:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY yl_9_10 ISPORT(a,b,c,d:IN Std_Logic;g:OUT Std_
7、Logic);END yl_9_10;ARCHITECTURE logic OF yl_9_10 ISSIGNAL e,f:Std_Logic;BEGINe=a or b;f=not(c or d);g=e and f;.变量(1)变量:是指在设计实体中会发生变化的值,同常量一样它可以在很多部分进行说明,并且可以是任何数据类型。(2)变量的作用:主要用于对暂时数据进行局部储存,变量是一个局部量,只能在进行语句.过程语句.函数语句的说明区域中加以说明,变量常用在实现某种算法的赋值语句中。(3)变量的说明格式:VARIABLE变量名:数据类型 约束条件:表达式 (4) 变量赋值语句的格式:目标变量
8、名:表达式变量和信号的区别信号与变量都是VHDL语言中的重要对象;但它们之间仍有区别;信号与变量的区别信号变量赋值符号=:=功能电路的内部连接内部数据交换作用范围全局,进程和进程之间的通信进程的内部行为延迟一定时间后才赋值立即赋值二. 并行语句. 顺序语句.在VHDL语言中,并行语句主要包括以下几种:(1)进程语句(2)并行信号代入语句(3)并行过程调用语句(4)块语句(5)并行断言语句(6)元件例化语句(7)生成语句句.并行语句(1)并行语句:各种并行语句在结构体中的执行是同步进行的,或者说是并行运行的,其执行方式与书写的顺序无关。(2)在执行中,并行语句之间可以有信息往来,也可以是互为独立
9、、互不相关、异步运行的(如多时钟情况)。(3)每一并行语句内部的语句运行方式可以有两种不同的方式,即并行执行方式(如块语句)和顺序执行方式(如进程语句)。一在VHDL语言中,顺序描述语句主要包括以下几类:(1)WAIT语句(2)变量赋值语句(3)信号代入语句(4)IF语句(5)CASE语句(6)LOOP语句(7)NEXT语句 (8)EXIT语句(9)RETURN 语句(10)NULL语句(11)过程调用语句(12)REPORT语句(13)断言语句二.顺序语句(1)顺序语句:每一条顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致的(2)顺序语句只能出现在进程(Process) 、函数(
10、Funcation)和过程(Procedure)中(3)顺序语句包括:赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句(4)顺序语句的特点:每一条顺序语句的执行顺序都是和它们的书写顺序基本一致的。顺序语句只能出现在进程和子程序中,子程序又包括函数和过程。(5)顺序赋值语句程序:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY yl_9_10 IS PORT(en:in std_logic; y :OUT Std_Logic_vector(0 to 7);END yl_9_10;ARCHITECTURE logic OF yl_
11、9_10 ISSIGNAL s1,s2 :Std_Logic;SIGNAL t:Std_Logic_vector(0 to 7);BEGINPROCESS(s1,s2,en)Variable v1,v2:Std_Logic;Beginif en=1 thenV1:=1; V2:=1;三. 循环语句、双向口1.循环语句程序:IBLRARY ieee;USE ie.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY yl _9-10 ISport(shft_lft :in std_logieec; d_in :in std_logic
12、_vector(3 downto 0); q_out :out std_logic_vector(7 downto 0);ENDyl_9_10;ARCHITECTURE logic OF yl_9_10ISBEGIN)PROCESS(d_in,shft_lftVARIABLE shft_var:std_logic_vector(7 DOWNTO 0);BEGIN shft_var(7 downto 4):=0000; shft_var(3 downto 0):=d_in;IF shft_lft=1THEN FOR i IN 7 DOWNTO 4 LOOP shft_var(i):=shft_v
13、ar(i-4);END LOOP;shft_var(3 downto 0):=0000;ELSE shft_var:=shft_var;END IF; q_out=shft_var;END PROCESS;END logic;2.双向口语句程序:LYIBRAR ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic yl_9_10 IS SIGNAL int_count: std_logic_vectoric_unsigned.all;ENTITYyl_idcnt_9_10IS PORT ( clk, ld, oe: IN std_logic;
14、count: INOUT std_logic_vector(7 DOWNTO 0);ENDyl_idcnt9-10; ARCHITECTURE archldcnt OF fs_idcnt(7 DOWNTO 0); BEGIN cnt: PROCESS (clk) BEGIN IF rising_edge(clk) THEN IF ld=1 THEN int_count = count; ELSE int_count = int_count + 1; END IF; END IF; END PROCESS cnt ; outen: PROCESS (oe, int_count) BEGIN IF
15、 oe = 1 THEN count = int_count ; ELSE count Z) ; END IF ; END PROCESS outen;END archldcnt; 四. 数字钟综合设计1.基本部分:包括秒、分、时计时器2.扩展部分:(1)整点报时(2)调分调时(3)定时(比较,多选一)(4)秒表(分频)(5)调时、定时扩展、用计数器驱动8个LED灯60计数器LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all; entity yl_c60_9_10is port(clk,clr,en:
16、in std_logic; carry:out std_logic; ge,shi :out std_logic_vector(3 downto 0); endyl_c60_9_10;architecture one of yl_c60_9_10 issignal g,s:std_logic_vector(3 downto 0);beginprocess(clk,clr,en)beginif clr=1then g=0000;s=0000;elsif clkevent and clk=1 then if en=0 thenif g=1001 and s=0101 then g=0000;s=0
17、000;carry=1;elsif g=1001 then g=0000;s=s+1;else g=g+1;carry=0;ge=g; shi=s; end if;end if;end if;-end process;ge=g; shi=s;end process;end;24进制计数器LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all; entity yl_c24_9_10 is port(clk,clr,en:in std_logic; carry:out std_logic; ge,shi :o
18、ut std_logic_vector(3 downto 0); end yl_c24_9_10;architecture one of yl_c24_9_10 issignal g,s:std_logic_vector(3 downto 0);beginprocess(clk,clr,en)beginif clr=1then g=0000;s=0000;elsif clkevent and clk=1 then if en=0 thenif g=0011 and s=0010 then g=0000;s=0000;carry=1;elsif g=1001 then g=0000;s=s+1;
19、else g=g+1;carry=0;ge=g; shi=s; end if;end if;end if;-end process;ge=g; shi=s;end process;end;3. 数字时钟工作原理:数字时钟主要由秒信号产生模块、计数器、译码器及显示器等组成。其中,信号产生模块主要由分频器构成,计数器包括六十进制计数器和二十四进制计数器,用于时、分、秒计数。译码器及显示模块用于时、分、 秒十进制数的显示。 4. 图形及仿真波形:报时器LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;En
20、tity yl_baoshi_9_10 is port( clk2,clk3 :in std_logic; mg :in std_logic_vector (3 downto 0); ms :in std_logic_vector (3 downto 0); fg :in std_logic_vector (3 downto 0); fs :in std_logic_vector (3 downto 0); speaker :out std_logic);end yl_baoshi_9_10;architecture one of yl_baoshi_9_10 is beginspeaker=
21、1001 else clk3 when fs=0000 and fg=0000 and ms=0000 and mg=0000 else0;end;分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity yl_c2_9_10 is port(clk: in std_logic; carry : out std_logic); end yl_c2_9_10;architecture one of yl_c2_9_10 is signal m:std_logic_vector(3 dow
22、nto 0);begin process(clk,m) begin if clkevent and clk=1 then if m=0001 then m=0000;carry=1; else m=m+1;carry=0; end if; end if;end process;五. Protel原理图、PCB图Protel原理图: PCB图: 六. 学习总结: 通过这学期开设的电子线路(CPLD和CAD)设计这门课程学习,使我有了对电子设计的兴趣。我们主要学习了关于VHDL语言的编程,了解了的实体,构造体,信号,变量,进程等一些程序,从而认识到信号与变量之间的不同,还有作用范围的不同。学习进程
23、语句,顺序语句,循环语句,双向口,计数器,在其中我们学会了怎么编程,明白了就是另一种类型的语言,因为没有单片机的语言基础,我们学习的编程有一定的难度,通过学习,我们学会了的基本语言,在以后我们独自做数字时钟的实验,老师给了我们基本的程序,指导我们做数字时钟,通过教给我们二进制的计数器,我们自己改程序改进成为二十四进制,六十进制的计数器,做成了数字时 钟的最基本的结构,六十进制的做成分秒计数器,二十四进制的做成小时计数器,通过做成的器件连接在一起,做成了基本的时钟,这不仅让我感到了成就感,而且还学会了另一种语言的编程,数字时钟不仅要会计时,还要会调时,报时,在老师的指导下,我们加入了一个器件,这
24、个用来调时,然后我们做了选频器,这个用来在整点时报时,通过仿真我认识到了在编程中忽视的问题,及进位问题,在这次的实验中,通过查阅相关的资料,一步步的建立了对设计的理解,通过解决在编程,调试以及仿真过程中的种种问题,也加深了我对软件设计的熟悉程度。通过仿真,让我印象深刻的一点是,在编程当中,虽然某些程序的结构获得的效果及软件仿真的效果一致,但在实际硬件实现中却会有很大的不同。在这一次的课程中,让我收获颇多。三峡大学电气与新能源学院一字数要求要求2000-3000字之内,每个同学一份 二章节及内容1、第一章 VHDL中的进程、信号、变量2、第二章 并行语句、顺序语句 3、第三章 循环语句、双向口4、第四章 数字钟综合设计5、第五章 Protel 原理图、PCB图三报告的内容要反映出以上5个章节的内容,重点说明信号与变量的差别,并行处理的优点、数字钟综合设计,包括电路的工作原理、程序、仿真波形(在能够仿真的情况下)、学习中遇到的问题及解决的方法,完成的效果等。四总结简单谈一下学习本课程的体会五要求交打印稿,11月7日下午3:005:30交到EDA实验室
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1