首页 VHDL与数字集成电路设计VHDL1-4

VHDL与数字集成电路设计VHDL1-4

举报
开通vip

VHDL与数字集成电路设计VHDL1-41.1程序的结构library、entity、port1.2设计的表达architecture、signal1.3结构表达与运算表达1.4数字系统的进程表达process第一章VHDL对电路设计的基本描述VHDL与数字集成电路设计进程语句的格式进程名称:process(敏感量表)…变量设置begin…顺序运算语句(软件程序);…endprocess;1.4数字系统的进程表达process进程的结构特点1.4数字系统的进程表达process进程运算的特点将若干运算语句的汇总为...

VHDL与数字集成电路设计VHDL1-4
1.1程序的结构library、entity、port1.2 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 的表达architecture、signal1.3结构表达与运算表达1.4数字系统的进程表达process第一章VHDL对电路设计的基本描述VHDL与数字集成电路设计进程语句的格式进程名称:process(敏感量表)…变量设置begin…顺序运算语句(软件程序);…endprocess;1.4数字系统的进程表达process进程的结构特点1.4数字系统的进程表达process进程运算的特点将若干运算语句的汇总为一条并行语句,方便于程序设计理解和仿真控制管理,适合对系统进行行为描述;内部运算使用软件程序表达,不含硬件细节,可以实现复杂系统的仿真,但与综合通常没有直接对应关系;可用于表达与硬件完全无关的抽象运算,适合描述虚拟测试环境及软硬件协同过程。1.4数字系统的进程表达process进程运算的特点:敏感信号设置敏感信号用于控制进程的仿真执行;利用敏感表可以对进程进行局部变量参与的仿真调试,提高仿真效率;当敏感表中信号少于进程中使用的信号时,仿真结果与实际电路表现会有所不同;通常要求两者一致。敏感信号设置对电路综合不产生影响。1.4数字系统的进程表达processprocess(a,b,c)begind<=aandb;f<=cord;endprocess;process(a,b,c,d)begind<=aandb;f<=cord;endprocess;进程运算的特点:敏感信号设置1.4数字系统的进程表达process进程运算的特点:敏感信号设置1.4数字系统的进程表达process进程中的数据对象和运算关系信号signal:硬件连接概念,不能在进程中定义;负责界面信息交流;变量variable:表达软件数据,不能在进程外存在;负责运算细节。1.4数字系统的进程表达process进程的仿真运算特点1.4数字系统的进程表达process并行赋值与顺序赋值1.4数字系统的进程表达process进程内的信号特点进程语句内信号状态保持不变(硬件特点),但信号存储值可以随时变动(软件特点);进程内可以使用信号状态,但不能使用信号存储值;进程内允许同一信号出现在同一赋值号两边、允许对信号赋常数值;进程内允许对同一信号进行多次赋值,但只有最后一次赋值才有意义;1.4数字系统的进程表达process进程内的变量特点进程语句内变量以存储值表现;变量值可以在进程中使用,也可以通过变量赋值语句改变;变量表达软件数据,不一定具有硬件意义;进程内的变量值不可能存在于进程之外,当进程结束时(end),变量值必定消失;对于需要与信号对应的变量值,一定要在进程结束前赋值给信号值。1.4数字系统的进程表达processprocess(a)--a="0001"variablec:signed(3downto0);beginc:=signed(a);x<=c;--x="0001"c:=c+'1';y<=c;--y="0010"c:=c+'1';z<=c;--z="0011"c:=c+'1';x<=c;--x="0100"endprocess;endbeh;进程中的顺序赋值:变量赋值1.4数字系统的进程表达process--signalc="0000"process(a)begin--a="0001"c<=signed(a);x<=c;c<=c+'1';y<=c;c<=c+'1';z<=c;c<=c+'1';x<=c;endprocess;进程中的顺序赋值:信号赋值1.4数字系统的进程表达process进程本身是一条并行语句,代表一个硬件模块,通过信号赋值为特定外部信号提供驱动;进程内部语句全为软件语句,不具备硬件细节,不具有综合约束意义;进程的综合通过进出进程的信号表现的输入输出关系体现。进程的综合1.4数字系统的进程表达process进程内的变量特点进程中的变量除了可以用于表达信号运算值外,还可以用于表达文件处理中的抽象概念,用于虚拟测试环境的描述或表达软硬件协同设计的概念;例如,在采用textio资源库进行设计时,可以将变量设置为数据行line,这种表达可以非常方便地将硬件信号与软件数据进行交互传递:1.4数字系统的进程表达process进程对抽象数据的使用在资源库中对软件文件进行设置:内含若干数据行fileexcite:textisin“excite”;--指定输入文件fileresults:textisout“results”;--指定输出文件在进程中设置变量表达数据行:内含若干独立数据variableli,lo:line;--使用变量表达抽象概念:数据行1.4数字系统的进程表达processreadline(excite,li);--从输入文件中读入一行数据到liread(li,clk);--从行li中读入数据赋值给信号clkread(li,ex);--从行li中读入数据赋值给信号ex…write(lo,now,left,8);--将当前时间写入行lowrite(lo,resp);--将信号resp写入行lowriteline(results,lo);--将行lo写入到输出文件中进程对抽象数据的使用使用特殊的函数进行变量或信号的赋值:顺序读出或写入1.4数字系统的进程表达process进程语句的对比:always@(敏感条件)begin…顺序语句…end1.4数字系统的进程表达processprocess(敏感量表)变量设置begin…顺序语句;…endprocess;VHDLVerilogHDL进程语句的对比:moduleport设置wire设置—always外赋值reg设置—always中赋值always@(敏感条件)begin顺序语句end1.4数字系统的进程表达processentityport设置architeturesignal设置process(敏感量表)variable设置begin顺序语句;endprocess;VHDLVerilogHDL赋值语句的对比:连续赋值语句…always@(敏感条件)begin非阻塞赋值语句阻塞赋值语句end1.4数字系统的进程表达processarchiteturesignal赋值语句…process(敏感量表)begin信号赋值语句变量赋值语句endprocess;…VHDLVerilogHDL连续赋值:独立的并行语句,为信号赋值assigny=f(a,b,c);非阻塞赋值:always内的赋值,具有信号赋值特点,所有赋值在子程序结束时才实现y<=f(a,b,c);阻塞赋值:always内的赋值,具有变量赋值特点,根据语句排列顺序及时实现y=f(a,b,c);1.4数字系统的进程表达process赋值语句的对比:VHDL:使用signal和variable将硬件连接与数据存储概念明确区分,而对信号赋值的控制性则采用进程外的并行赋值和进程内的顺序赋值进行区分;VerilogHDL:使用wire和reg将直接赋值对象与受控赋值对象区分开,而对reg则采用always内的非阻塞赋值和阻塞赋值区分其是否具有硬件连接意义;为避免驱动冲突,应谨慎使用非阻塞赋值。1.4数字系统的进程表达process赋值语句的对比:由于进程内部采用软件编程,则可以将软件语言中各种运算控制方式引入到运算的表达中:条件分支:二分支控制选择分支:多选择控制循环控制:有限循环、条件循环wait控制:条件、延时寄存器控制:边沿检测控制进程中对运算的控制1.4数字系统的进程表达processif布尔表达式1then顺序语句1elsif布尔表达式2then顺序语句2……elsif布尔表达式nthen顺序语句nelse顺序语句(n+1)endif;条件判断语句:if-then-else语句1.4数字系统的进程表达process条件判断语句:if-then-else语句1.4数字系统的进程表达process每组then_else在运算流程中形成一个二分支路由判断,功能类似条件赋值语句when_else;这种分支架构可以重叠进行,形成运算网络架构,也可以对运算进行优先排序;当某个then表达对信号的赋值,缺少else的对应时,则表达对该信号进行寄存,可以综合形成寄存器。条件判断语句特点1.4数字系统的进程表达process例:优先编码器的表达architecturertlofpriorityisbeginprocess(a)beginifa(7)='1'theny<="111";elsifa(6)='1'theny<="110";elsifa(5)='1'theny<="101";elsifa(4)='1'theny<="100";elsifa(3)='1'theny<="011";elsifa(2)='1'theny<="010";elsifa(1)='1'theny<="001";elsey<="000";endif;endprocess;endrtl;1.4数字系统的进程表达process*case表达式iswhen选择值1=>顺序语句1;when选择值2=>顺序语句2;whenothers=>顺序语句3;endcase;选择分支语句:case语句1.4数字系统的进程表达process例:7段译码器architecturertlofseg7isbeginprocess(a)begincaseaiswhen"0000"=>y<="0111111";when"0001"=>y<="0000110";………when"1001"=>y<="1100111";whenothers=>y<="0000000";endcase;endprocess;endrtl;1.4数字系统的进程表达process*采用真值表形式,直观表达输入状态与输出状态间一一对应关系,也类似于多路选择器,功能类似于选择赋值语句with_select;可以利用每个选择对应的顺序语句加入复杂的运算过程;某些选择值可以对应null以表达不进行运算,对应真值表中的无关项;最后一个选择一定要为whenothers,避免出现未作定义的漏选。选择分支语句的特点1.4数字系统的进程表达process*循环语句:loop语句循环语句是典型的功能描述语句,用于表达某一运算功能的多次使用;在仿真中使用循环语句能够提高代码效率,但循环语句的综合通常会导致电路结构重复,复杂性急剧增加。VHDL中的循环语句可分为:有限循环、条件循环、无条件循环。1.4数字系统的进程表达process有限循环语句:for_loop语句for循环变量in范围loop顺序语句;endloop编号;循环变量为整数类型,不需要说明;范围的数据类型也必须为整数;循环变量从范围最左边的值开始;每进行一次循环,指标右移1位;直到全部循环完毕;1.4数字系统的进程表达processwhile布尔表达式loop顺序语句;endloop编号;不指定循环次数;每次循环前检测布尔表达式的值;当布尔表达式为真时,执行循环;为假时退出循环;在循环体内,应有语句能够改变布尔表达式中变量的值,避免无限循环。条件循环语句:while_loop语句1.4数字系统的进程表达processloop顺序语句;endloop编号;内部设置有跳出循环的语句(next,exit);只要不满足跳出条件,就会一直循环下去;无条件循环语句:loop语句1.4数字系统的进程表达processnext编号when布尔表达式;执行到此语句时,检测布尔表达式,若为true,则转为执行编号所表示的语句(跳出本循环);若为false,则继续进行循环;若没有编号,则当布尔表达式为true时,直接跳出本次循环,开始下一次循环;无条件循环语句:loop语句1.4数字系统的进程表达processexit编号when布尔表达式;执行到此语句时,检测布尔表达式,若为true,则转为执行编号所表示的语句;若为false,则继续进行循环;若没有编号,则当布尔表达式为true时,直接跳出循环,执行循环之后的下一条语句;本语句可以作为中止loop的语句;无条件循环语句:loop语句1.4数字系统的进程表达processloop语句的应用实例对数组信号进行初始化typematrix2isarray(0to1023,7downto0)ofstd_logic;variablew1:matrix2;---foriin0to1023loopforjin7downto0loopw(i,j):='0';endloop;endloop;1.4数字系统的进程表达process*loop语句的应用实例并入串出的64位移位寄存器设计process(clk,load)beginifload='0'thenq<=din;dout<='0';elsifclk'eventandclk='1'thenforiin1to63loopq(i)<=q(i-1);endloop;dout<=q(63);endif;endprocess;1.4数字系统的进程表达process*进程中可以采用wait语句控制进程的执行;当进程中含有wait语句时,将根据wait语句的条件判断来决定进程是否继续执行;在进程中,如果使用了wait语句,就不能使用敏感表;在不含敏感表的进程中,至少应该包含一条wait语句;进程中的控制语句:wait语句1.4数字系统的进程表达process进程中的控制语句:wait语句waiton信号,信号;等待所列举信号中任何一个发生变化,再进行进程的执行;所起作用与进程的敏感信号表相同;1.4数字系统的进程表达processwaituntil布尔表达式;利用表达式建立隐含的敏感信号表;当任何一个涉及的信号发生变化时,就自动检测布尔表达式是否为真;如果为真,则执行进程语句;如果为假,则不执行进程;此语句通常会综合为寄存器;进程中的控制语句:wait语句1.4数字系统的进程表达processwaitfor时间表达式;等待由时间常量或变量组成的表达式所表达的时间到达,再执行该进程;等待期间的各种信号变化不会导致进程执行;该语句通常会导致进程周期性执行;waitfor语句不能综合;通常在仿真的testbench编制时使用;进程中的控制语句:wait语句1.4数字系统的进程表达processentityclockisport(clk:bufferbit);endclock;architecturebehofclockisbeginprocessbeginclk<=notclk;waitfor10ns;endprocess;endbeh;例:时钟信号发生器1.4数字系统的进程表达process*VHDL中的寄存器控制描述process(clk)--只能在受时钟控制的进程中表达beginifclk'eventandclk='1'--对时钟上升沿进行检测thenq<=f(a,b,c);--受控的信号赋值语句endif;--未对else进行描述,隐含信号保持endprocess;1.4数字系统的进程表达processVHDL中的寄存器描述特点寄存器描述表达的是器件的控制行为,具有仿真意义,为了提高仿真效率,表达寄存器的进程敏感表应该只受时钟变化的影响;在受控语句为信号赋值的条件下,通常具有唯一的综合效果,每条出现在时钟检测条件内的赋值语句都会被综合为独立寄存器;1.4数字系统的进程表达processVHDL中的寄存器描述特点寄存器的基本器件对应为D触发器:1.4数字系统的进程表达processprocess(clk)beginifclk'eventandclk='1'thenq<=d;endif;endprocess;若将q和d设置为数组,则表达并行寄存器组VHDL中的寄存器描述特点在ASIC设计中,寄存器设置应采用单独的进程表达,该进程中不应具有其他的组合运算混合表达。在FPGA设计中,由于每个可编程单元都具有寄存器控制,因此通常应该将每个单元的运算都采用寄存器控制表达,在同步控制中,可以将多个组合运算赋值加入到同一个寄存器控制模块中进行控制。1.4数字系统的进程表达process对寄存器触发条件的控制可以为寄存器设置使能端控制其时钟触发条件,表达如下:1.4数字系统的进程表达processprocess(clk)beginifclk'eventandclk='1'anden='1'thenq<=d;endif;endprocess;architecturebehofkregisbeginprocess(clk)beginifclk'eventandclk='1'thenifclr='1'thenq<='0';elseq<=d;endif;endif;endprocess;endbeh;7.1寄存器的行为描述对寄存器状态的清零控制:同步清零architecturebehofkregisbeginprocess(clk,clr)beginifclr=‘1’thenq<=‘0’; elsifclk'eventandclk='1'thenq<=d;endif;endprocess;endbeh;7.1寄存器的行为描述对寄存器状态的清零控制:异步清零******
本文档为【VHDL与数字集成电路设计VHDL1-4】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
潮起潮落
一线信息技术教师,具有丰富教学经验和管理经验,多次被评为地级优秀教师
格式:ppt
大小:751KB
软件:PowerPoint
页数:0
分类:高中语文
上传时间:2020-04-05
浏览量:5