当前位置:文档之家› EDA实验总结报告

EDA实验总结报告

CPLD与电子CAD报告班号: XXXXXXXXX序号: XXXXX学号: XXXXXXX姓名: XXXXXXX同组同学姓名: XXXXXXX三峡大学电气与新能源学院1CPLD及电子CAD⏹前言 VDHL初步理解和软件常规操作⏹第一章 VHDL中的进程、信号与变量⏹第二章并行语句、顺序语句⏹第三章循环语句、双向口⏹第四章数字钟综合设计⏹第五章Protel原理图、PCB图⏹总结学习CPLD心得和体会前言 VDHL初步理解和软件常规操作一,VHDL的历史1982年,诞生于美国国防部赞助的vhsic项目1987年底,vhdl被IEEE和美国国防部确认为标准硬件描述语言,即IEEE-1076(简称87版)1993年,IEEE对VHDL进行了修订,公布了新版本的VHDL,即IEEE标准的1076-1993(1164)版本1996年,IEEE-1076.3成为VHDL综合标准二,VHDL软件Max+plusⅡ的常规操纵方法1)新建文件后,输入项目文件名(File-Project-Name)(此时save as名称如果是程序则需要用vhd结尾保存文件)2)输入源文件(图形、VHDL、波形输入方式)(Max+plusⅡ-graphic Editor;Max+plusⅡ-Text Editor;Max+plusⅡ-Waveform Editor)3)指定CPLD型号,选择器件(Assign-Device)(应选择EP1K 30TC144-1)4)设置管脚、下载方式和逻辑综合的方式(Assign-Global Project Device Option,Assign-Global Logic Synthesis) 5)保存并检查源文件(File-project-Save & Check)6)指定管脚(Max+plusⅡ-Floorplan Editor)(具体的管脚应该参考23CPLD 管脚资源表格)7)保存和编译源文件(File-project-Save & Compile) 8)生成波形文件(Max+plus Ⅱ-Waveform Editor) 9)仿真(Max+plus Ⅱ-Simulator)10)下载配置(Max+plus Ⅱ-Programmer)第一章 VHDL 中的进程、信号与变量1.VHDL 中编程单元以及用法:1.Entity(实体):像一个黑盒子一样,用来说明模型外部的输入输出特征2.Architecture (构造体):用来定义模型的内容和功能,每一个构造体必须有一个实体与它相对应,所以两者一般成对出现;3.Generic(类属参量):规定端口的大小、实体中子元件的数目等;4.Ports (端口):是实体的一部分,主要用于信号的传输;常见的端口类型有IN (数据只能进实体),OUT (数据只能流出实体),INOUT (即可流进又可流出),BUFFER (数据流进实体同时可被反馈);5.数据类型:BIT(位类型,只取‘0’或‘1’);BIT_VECTOR (位矢量类型,包含一组位类型);BOOLEAN (布尔类型,其值可为‘TEUE ’或‘FALSE ’);INTEGER (整型);Natural (自然数类型);Positive (正整数类型);REAL (浮点数类型);6.Std_Logic 数据类型:IEEE1164中定义的一种数据类型,包含9种取值 (U,X,0,1,Z,W,L,H,_)。

电路中有三态逻辑必须用std_logic 和std_logic_vector ;7.构造体:描述实体的内部结构和逻辑功能,和实体相联系,一个实体可以 有多个构造体,构造体的运行时并发的;2.进程语句意义和用法:进程语句是VHDL 中最重要的语句,具有并行和顺序行为的双重性,其特点主要有:1.进程和进程语句之间是并行的关系;2.进程内部是一组连续执行的顺序语句;3.进程语句与结构体中的其余部分进行信息交流是靠信号来完成的;4.一个构造体可以有多个进程语句;5.进程的基本格式:【进程标号:】PROCESS[(信号敏感表)]IS <说明区> BEGIN<顺序语句>END PROCESS[进程标号]; 6.进程举例4library ieee;use ieee.std_logic_1164.all; entity if_case_55_56 is port(a,b,c,d: in std_logic;sel : in std_logic_vector (1 downto 0); y,z:out std_logic);end if_case_55_56;architecture logic of if_case_55_56 is beginif_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 y<=d; end if;end process if_label; case_label:process(a,b,c,d,sel) begincase sel iswhen "00" =>z<=a; when "01" =>z<=b; when "10" =>z<=c; when "11" =>z<=d; when others =>z<='0';end case;end process case_label; end logic;7.其仿真波形为3.信号的用途以及和变量的区别:※信号是描述硬件系统的基本数据对象,它的性质类似于连接线。

它可以代表连线、内连元件、或端口。

※用“<=”来给信号赋值。

※信号可以作为实体中进程模块之间的信息交流媒介,信号存在于进程外。

※信号定义的语句格式与变量相似,信号定义也可以设置初始值。

※在进程中只能将信号列入敏感表,而不能将变量列入敏感表。

※信号的定义格式:SIGNAL 信号名:数据类型:=初始值;※信号的赋值语句表达式:目标信号名 <= 表达式;/*这里的表达式可以是一个运算表达式,也可以是数据对象(变量、信号或常量)*/4.变量的定义及特点:1.变量是一个局部量,只能在进程和子程序中使用。

2.必须在进程和子进程的说明性区域说明。

3.不能表达连线和存储元件。

变量的主要作用是在进程中作为临时的数据存储单元。

4.定义变量的一般表述:WARIABLE 变量名:数据类型 := 初始值;5.变量赋值的一般表述为:目标变量名 := 表达式;因此,变量赋值符号是“:=”,变量数值的改变是通过变量赋值来实现的。

赋值语句右方的“表达式”必须是一个与“目标变量名”具有相同数据类型的数据,这个表达式可以是一个运算表达式,也可以是一个数值。

5.信号与变量的区别(如下表):6.举例说明56程序功能:以上是一个信号的例子,a 和b 相或得e ,c 和d 相或得f ,然后e 和f 相与得到输出g 。

其中e 和f 是在构造体内部声明的内部连接信号。

第二章 并行语句、顺序语句1.并行语句意义和用法1.在VHDL 中,并行语句有多种语句格式,包括:并行信号赋值语句、进程语句、块语句、条件信号赋值语句、元件例化语句,生成语句,并行过程调用语句。

2.并行信号赋值语句:它包括简单信号赋值语句、条件信号赋值语句和选择信号赋值语句。

3.并行语句的优点:并行语句是硬件描述语言与一般软件程序的最大区别所在,所以并行语句在结构体中的执行都是同时进行的,即他们的执行顺序与语句的书写的先后顺序无关。

4.并行语句有with_select_then,when_else,if_then_else 和case_when 四种。

例如: With s select x<=a when “00”,b when “01”,c when “10”,d when others; 这是with_select_then 语句,该语句的作用是当s 分别为“00”“01”“10”时,对应把a,b,c 赋值给x ,否则把d 赋值给x 。

2.顺序语句1.每一条语句的执行顺序与其书写顺序一致。

2.顺序语句只能出现在进程、函数和过程中。

3.顺序语句包括:赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句。

73.程序调试步骤:①选择File-new,然后选择Waveform Editor File ,再从下拉列表中选择.扩展名,并按ok ,即可创建一个新的无标题的文件,保存并修改名称。

② 选择File -END TIME ,在出现的对话框中输入1s ,按ok ,则设置了结束时间;③选择Options-Gird size ,输入30ns ,按ok ;④选择node-Enter nodes from SNF 菜单项⑤选中type 框中input 和output 项,选择List ,选择=>按钮,按ok 根据需要编辑波形。

程序截图和仿真波形截图:4.程序工作原理:程序中进程里的是顺序语句,既有信号又有变量,由于赋值无延迟,而变量赋值有延迟,因此当En 为1时,最终的输出y (n )为11100010输出y(n)为11100010.3、第三章 循环语句、双向口1.循环语句1.循环语句的基本格式为: [LOOP 标号:]8[重复模式]LOOP 顺序语句;END LOOP [LOOP 标号] 2.举例说明:for i in 7 downto 4 loopshift_var(i):= shift_var(i-4); end loop;该语句的作用是当i=4,5,6,7时,执行顺序语句shift_var(i):= shift_var(i-4)。

2.双向口1.双向口申明的格式为:[双向口标号]:INOUT [数据类型];2.双向口既可以作为输入也可以作为输出。

双向端口在完成输入功能时,必须使原来成输出模式的端口成高阻态,否则,待输入的外部数据势必会与端口处原有电平发生“线与”,导致无法将外部数据正确的读入,从而实现“双向”的功能。

3.波形仿真过程为:MAX+plus II → Waveform Editor → (Options → Grid Size → 50ms ) → Node → Enter Nodes from SNF → List → 给定输入信号高低电平 → XC 选中所有输入信号,点击右键 → Enter Group ,可以创建组。

相关主题