《VHDL语言与数字逻辑电路设计》――第6讲 VHDL并行语句_第1页
《VHDL语言与数字逻辑电路设计》――第6讲 VHDL并行语句_第2页
《VHDL语言与数字逻辑电路设计》――第6讲 VHDL并行语句_第3页
《VHDL语言与数字逻辑电路设计》――第6讲 VHDL并行语句_第4页
《VHDL语言与数字逻辑电路设计》――第6讲 VHDL并行语句_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、许钢 2020/7/5,VHDL语言与数字逻辑电路设计,1,VHDL语言与数字逻辑电路设计,主讲:许钢 2010.9,第6讲 VHDL并行语句,并行语句是硬件描述语言与软件程序最大的区别所在。所有并行语句在结构体中的执行都是同时进行的,即它们的执行顺序与语句书写的顺序无关。这种并行性是由硬件本身的并行性决定的,即一旦电路接通电源,它的各部分就会按照事先设计好的方案同时工作。 VHDL有几种主要并行语句: 进程语句 块语句 并行信号赋值语句 元件例化语句 生成语句 并行过程调用语句,许钢 2020/7/5,2,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,进程(Process)语句是

2、一种并发处理语句,在一个构造体中多个Process是同时并行运行,它是VHDL语言中描述硬件系统并发行为的最基本的语句。它的特点归纳如下: 一个进程语句可以与其他进程语句并发运行; 进程语句可以存取在设计实体或构造体中定义的所有信号; 在一个进程模块内的语句都是按顺序执行的; 进程有挂起和执行两个状态,要激活进程,在进程结构中必须包含一个敏感信号列表或含一个Wait语句; 进程之间的通信是通过信号传递实现的。,进程语句 (Process),许钢 2020/7/5,3,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,块语句是将结构体中的并行语句组合在一起,其主要目的是改善并行语句及其结

3、构的可读性,一般用于较复杂的VHDL程序中;但从综合的角度看,BLOCK语句没有实用价值。 块语句的语法描述如下: 块标号:BLOCK 说明语句; BEGIN 并行语句; END BLOCK块标号; 注意:块标号必须有。,块语句(Block),许钢 2020/7/5,4,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,说明语句与结构体的说明语句相同,主要是对该块所要用到的对象、其它模块等加以说明。可说明的项目有: 端口说明、类属说明; 子程序说明及子程序体; 数据类型说明; 常数说明; 信号说明; 元件说明等。,块语句(Block),许钢 2020/7/5,5,VHDL语言与数字逻辑

4、电路设计,第6讲 VHDL并行语句,例1: ARCHITECTURE behave OF test_block IS BEGIN . p1:BLOCK BEGIN aequalbb ELSE 0; alessb=1 WHEN ab ELSE 0; END BLOCK; . END behave;,块语句(Block),许钢 2020/7/5,6,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,BLOCK是可以嵌套的,内层BLOCK块可以使用外层BLOCK块所定义的信号,而反之则不行。 例2: BLK1:Block Signal qbus;std_logic_vector; Begin

5、 BLK2:Block Signal qbus:std_logic_vector; Begin BLK2语句-使用BLK1中的qbus:BLK1-qbus End Block BLK2 BLK1语句 End Block BLK1 (尽量不要用同名变量或信号。),块语句(Block),许钢 2020/7/5,7,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,块是一个独立的子结构,它可以包含 Port 和 Generic 语句。这样就允许设计者通过这两个语句将块内的信号变化传递给块的外部信号,同样也可以将块外部的信号变化传递给块的内部。 Port 和 Generic 语句的这种性能,将

6、允许在一个新的设计中可重复使用已有的 Block 块。在新的模块中,如果Port名和Generic名与原来的不一致时,在块中采用 Port 和 Generic 映射就可以顺利解决这个问题。,块语句(Block),许钢 2020/7/5,8,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,例3: Architecture cpu-blk OF cpu Is Signal ibus,dbus,x: tw32; Begin . ALU:Block Port(abus,bbus:In tw32; dout:Out tw32); Port Map( abus=ibus, bbus=dbus,

7、dout=x ); 原有的信号、常数等说明语句; Begin 原有的块内语句; End Block ALU; . End cpu-blk;,块语句(Block),许钢 2020/7/5,9,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,并行信号赋值语句有三种形式: 简单信号赋值语句 简单信号赋值语句的格式: 赋值目标=表达式;,并行信号赋值语句,许钢 2020/7/5,10,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,并行信号赋值语句有三种形式: 条件信号赋值语句 条件信号赋值语句的格式: 赋值目标=表达式1 WHEN 赋值条件 ELSE 表达式2 WHEN 赋值条件

8、 ELSE . 表达式n; 例4: ARCHITECTURE archmux OF mux4 IS BEGIN y=a0 WHEN s=00 ELSE a1 WHEN s=01 ELSE a2 WHEN s=10 ELSE a3 ; END archmux;,并行信号赋值语句,对比If语句: If条件信号赋值语句是顺序语句,只能用在进程(Process)中。,许钢 2020/7/5,11,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,并行信号赋值语句有三种形式: 选择信号赋值语句 选择信号赋值语句的格式: WITH 选择表达式 SELECT 赋值目标信号=表达式1 WHEN 选择值

9、1, 表达式2 WHEN 选择值2, . 表达式n WHEN others; 例5: ARCHITECTURE archmux OF mux4 IS BEGIN WITH s SELECT y=a0 WHEN 00, a1 WHEN 01, a2 WHEN 10, a3 WHEN OTHERS;-最后一句为分号; END archmux;,并行信号赋值语句,对比Case语句: Case语句是顺序语句,只能用在进程(Process)中。,许钢 2020/7/5,12,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,并行过程调用语句见第7讲。,并行过程调用语句,许钢 2020/7/5,1

10、3,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,我们常把已设计好的设计实体称为一个元件或一个模块。VHDL中基本的设计层次是元件,它可以作为别的模块或者高层模块引用的低层模块。 元件声明是对VHDL模块(即底层设计,也是完整的VHDL设计)的说明,使之可在其它模块中被调用。元件声明可放在程序包中,也可放在其它高层设计的结构体中进行。 元件例化是指元件的调用。 元件声明及元件例化的语法分别如下: 元件声明: COMPONENT元件实体名 PORT (元件端口信息); -同该元件定义时实体的PORT部分 END COMPONENT 元件实体名; 元件例化: 例化名: 元件实体名 PO

11、RT MAP (端口列表); 其中端口列表可以采用位置关联和名称关联的方法。,元件的例化,许钢 2020/7/5,14,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,【例6】:将一个模为10的计数器和一个七段译码器连接,送数码管显示。 已知模10计数器模块名称为:cntm10;七段译码器模块名称为:decode48,元件的例化,模10计数器模块cntm10的符号和输入输出关系时序图:,许钢 2020/7/5,15,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,【例6】:将一个模为10的计数器和一个七段译码器连接,送数码管显示。 已知模10计数器模块名称为:cntm10;

12、七段译码器模块名称为:decode48,元件的例化,七段译码器模块decode48的符号和输入输出关系波形图:,许钢 2020/7/5,16,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,【例6】:将一个模为10的计数器和一个七段译码器连接,送数码管显示。 已知模10计数器模块名称为:cntm10;七段译码器模块名称为:decode48,元件的例化,cntm10和decode48模块的连接关系图:,许钢 2020/7/5,17,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,-顶层设计VHDL源程序:cntvh10.vhd LIBRARY ieee; USE ieee.s

13、td_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY cntvh10 PORT ( rd,clk: IN std_logic; co : OUT std_logic; qout: OUT std_logic_vector(6 DOWNTO 0); END cntvh10; -接下一页,元件的例化,【例6】:将一个模为10的计数器和一个七段译码器连接,送数码管显示。 已知模10计数器模块名称为:cntm10;七段译码器模块名称为:decode48,许钢 2020/7/5,18,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句

14、,ARCHITECTURE arch OF cntvh10 IS -元件声明(库中已有cntm10及decode48这两个元件) COMPONENT cntm10 PORT( nreset,clk : IN std_logic; co : OUT std_logic; qcnt : BUFFER std_logic_vector(3 DOWNTO 0); END COMPONENT; COMPONENT decode48 PORT ( adr: IN std_logic_vector(3 DOWNTO 0); decodeout: OUT std_logic_vector(6 DOWNTO 0

15、); END COMPONENT; -接下一页,元件的例化,【例6】:将一个模为10的计数器和一个七段译码器连接,送数码管显示。 已知模10计数器模块名称为:cntm10;七段译码器模块名称为:decode48,注意:元件声明时端口名一定要用原元件定义时的端口名,不能变动!,许钢 2020/7/5,19,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,SIGNAL qa: std_logic_vector(3 DOWNTO 0); BEGIN u1: cntm10 PORT MAP (rd,clk,co,qa); -元件例化语句,位置关联 u2: decode48 PORT MAP(

16、decodeout=qout, adr=qa); -元件例化语句,名称关联 END arch; 元件例化时的端口列表可采用位置关联方法,如u1。这种方法要求的实参(该设计中连接到端口的实际信号,如rd、clk等)所映射的形参(被调用元件的对外接口信号)的位置同元件声明中一致。 元件例化时的端口列表也可采用名称关联方法映射实参与形参,如u2。格式为(形参1=实参1,形参2=实参2,.),这种方法与位置无关。,元件的例化,【例6】:将一个模为10的计数器和一个七段译码器连接,送数码管显示。 已知模10计数器模块名称为:cntm10;七段译码器模块名称为:decode48,许钢 2020/7/5,2

17、0,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,元件的例化,【例6】:将一个模为10的计数器和一个七段译码器连接,送数码管显示。 已知模10计数器模块名称为:cntm10;七段译码器模块名称为:decode48,许钢 2020/7/5,21,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,生成语句有一种复制作用,它可以生成与某个元件或设计单元电路完全相同的一组并行元件或设计单元电路结构。 生成语句一般要和元件的例化语句联合起来使用。 生成语句的格式: 标号:FOR 循环变量 IN 取值范围 GENERATE 说明语句; BEGIN 并行语句(含元件例化语句); END

18、GENERATE标号; 或 标号:IF 条件 GENERAE 说明语句; BEGIN 并行语句(含元件例化语句) ; END GENERATE标号;,生成语句(Generate),许钢 2020/7/5,22,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,【例7】:利用Generate 语句产生4个D触发器 ,如图所示。,生成语句(Generate),许钢 2020/7/5,23,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,【例7】:利用Generate 语句产生4个D触发器 ,如图所示。 LIBRARY ieee; USE ieee.std_logic_1164.A

19、LL; ENTITY dff_4 IS PORT(clk,clrn,prn :IN std_logic; d :IN std_logic_vector(3 DOWNTO 0); q :OUT std_logic_vector(3 DOWNTO 0); END dff_4; ARCHITECTURE archdff_4 OF dff_4 IS COMPONENT dff PORT(D,CLK,CLRN,PRN:IN std_logic; Q:OUT std_logic); END COMPONENT; BEGIN dff4:FOR i IN 3 DOWNTO 0 GENERATE u:dff P

20、ORT MAP (d(i),clk,clrn,prn,q(i); END GENERATE; END archdff_4;,生成语句(Generate),许钢 2020/7/5,24,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,一般来讲,如果电路中各元件实体的输入、输出端是规则的,则用FOR_GENERATE设计;如果是不规则的,则用IF_GENERATE语句设计。 例8:4位移位寄存器的设计,如图所示。,生成语句(Generate),许钢 2020/7/5,25,VHDL语言与数字逻辑电路设计,第6讲 VHDL并行语句,【例8】:4位移位寄存器的设计,如图所示。 LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY n_shifter IS GENERIC(m:integer:=4); PORT(a,clk,clrn,prn: IN std_logic; b: OUT std_logic); END n_shifter; ARCHITECTURE behave OF n_shifter IS COMPONENT dff PORT(d,clk,clrn,prn: IN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论