EDA技术项目教程——基于VHDL与FPGA 课件 于润伟 项目6、7 信号发生器的设计与实现、数字系统设计实训.pptx

EDA技术项目教程——基于VHDL与FPGA 课件 于润伟 项目6、7 信号发生器的设计与实现、数字系统设计实训.pptx

  1. 1、本文档共177页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

EDA项目教程

——基于VHDL与FPGA;项目6信号发生器的设计与实现;6.1子程序和LOOP语句;6.1.1子程序;LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYpsumIS

PORT(a,b,c:INSTD_LOGIC_VECTOR(3DOWNTO0);

clk,clr:INSTD_LOGIC;--clr为复位端,

高电平有效

SUM:OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDpsum;;ARCHITECTUREaOFpsumIS

PROCEDUREadd1(data,datb,datc:INSTD_LOGIC_VECTOR;

--定义过程体

datout:OUTSTD_LOGIC_VECTOR)IS

BEGIN

datout:=data+datb+datc;--数据求和

ENDadd1;--过程体定义结束。

在结构体中省略了过程首

BEGIN--结构体开始

PROCESS(clk)

VARIABLEtmp:STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN--进程开始;IF(clkEVENTANDclk=1)THEN

IF(clr=1)THEN--高电平

同步复位

tmp:=0000;

ELSE

add1(a,b,c,tmp);--过程调用

ENDIF;

ENDIF;

SUM=tmp;

ENDPROCESS;

ENDa;;从仿真波形中可以看出,在0~50ns区间,CLR=1(同步复位有效),SUM=0000;在50~100ns区间,clk上升沿的左侧(观察输入信号),a=0001、b=0100、c=0010,clk上升沿的右侧(观察输出信号),SUM=0111;在350~400ns区间,clk上升沿的左侧,a=0111、b=0111、c=0011,clk上升沿的右侧,SUM=0001(数据溢出)。其他区间的波形情况符合题意。

想一想、做一做:如何解决数据溢出的问题?;在VHDL中,用户可以自己定义一个程序包,将一些数据类型、子程序和元件保存在该程序包中,以便被其他设计程序所利用。程序包分为包首和包体两部分,格式如下。

(1)包首:PACKAGE程序包名称IS

包首说明;

END程序包名称;

(2)包体:PACKAGEBODY程序包名称IS

包体说明语句组,

END程序包名称;

说明:??首说明部分可定义函数、元件和子程序等。包体说明语句组部分是具体描述函数、元件和子程序的内容。在程序包结构中,如果在包首中定义了函数、元件和子程序的具体内容,这时包体可以缺省。;3.函数(FUNCTION);编写一个能输出2个4位二进制数中较大数的函数,并将这段函数放在一个程序包中,然后在进程中调用该函数两次,输出3个4位二进制数中的最大数。

(1)在名称为blockA的程序包中,定义函数名称为maxA的函数,程序包文件名为blockA.vhd。

由于本题需

您可能关注的文档

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档