vhdl生成语句的使用.docx

上传人:小飞机 文档编号:3168438 上传时间:2023-03-11 格式:DOCX 页数:5 大小:37.94KB
返回 下载 相关 举报
vhdl生成语句的使用.docx_第1页
第1页 / 共5页
vhdl生成语句的使用.docx_第2页
第2页 / 共5页
vhdl生成语句的使用.docx_第3页
第3页 / 共5页
vhdl生成语句的使用.docx_第4页
第4页 / 共5页
vhdl生成语句的使用.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《vhdl生成语句的使用.docx》由会员分享,可在线阅读,更多相关《vhdl生成语句的使用.docx(5页珍藏版)》请在三一办公上搜索。

1、vhdl生成语句的使用 生成语句 生成语句是一种可以建立重复结构或者是在多个模块的表示形式之间进行选择的语句。由于生成语句可以用来产生多个相同的结构,因此使用生成语句就可以避免多段相同结构的VHDL程序的重复书写。 生成语句有两种形式:FOR- GENERATE模式和IF- GENERATE模式。 FOR- GENERATE 模式的生成语句 FOR- GENERATE 模式生成语句的书写格式为: 标号:FOR 循环变量 IN 离散范围 GENERATE ; END GENERATE 标号; 其中循环变量的值在每次的循环中都将发生变化;离散范围用来指定循环变量的取值范围,循环变量的取值将从取值范

2、围最左边的值开始并且递增到取值范围最右边的值,实际上也就限制了循环的次数;循环变量每取一个值就要执行一次GENERATE语句体中的并行处理语句;最后FOR- GENERATE模式生成语句以保留字END GENERATE 标号:;来结束GENERATE语句的循环。 生成语句的典型应用是存储器阵列和寄存器。下面以四位移位寄存器为例,说明FOR- GENERATE模式生成语句的优点和使用方法。 下图所示电路是由边沿D触发器组成的四位移位寄存器,其中第一个触发器的输入端用来接收四位移位寄存器的输入信号,其余的每一个触发器的输入端均与左面一个触发器的Q端相连。 图用D触发器构成的四位移位寄存器 根据上面

3、的电路原理图,写出四位移位寄存器的VHDL描述如下。 LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY shift_reg IS PORT; END shift_reg; ARCHITECTURE structure OF shift_reg IS COMPONENT dff -元件说明 PORT; END COMPONENT; SIGNAL q:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN dff1:dff PORT MAP (di,cp,q); -元件例化 dff2:dff PORT MAP (q,cp,q);

4、dff3:dff PORT MAP (q,cp,q); dff4:dff PORT MAP (q,cp,do); END structure; 在上例的结构体中有四条元件例化语句,这四条语句的结构十分相似。我们对上例再做适当修改,使结构体中这四条元件例化语句具有相同的结构,如下例所示: 例 LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY shift_reg IS PORT; END shift_reg; ARCHITECTURE structure OF shift_reg IS COMPONENT dff PORT; END COMPON

5、ENT; SIGNAL q:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN q= di dff1:dff PORT MAP (q,cp,q); dff2:dff PORT MAP (q,cp,q); dff3:dff PORT MAP (q,cp,q); dff4:dff PORT MAP (q,cp,q); do= q END structure; 这样便可以使用FOR- GENERATE模式生成语句对上例中的规则体进行描述,如例所示。 例: FOR- GENERATE模式生成语句应用 LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.AL

6、L; ENTITY shift_reg IS PORT; END shift_reg; ARCHITECTURE structure OF shift_reg IS COMPONENT dff PORT; END COMPONENT; SIGNAL q:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN q= di label1:FOR i IN 0 TO 3 GENERATE dffx:dff PORT MAP (q,cp,q); END GENERATE label1; do = q END structure; 可以看出用FOR- GENERATE模式生成语句替代例中

7、的四条元件例化语句,使VHDL程序变的更加简洁明了。在例的结构体中用了两条并发的信号代入语句和一条FOR- GENERATE模式生成语句,两条并发的信号代入语句用来将内部信号q和输入端口di、输出端口do连接起来,一条FOR- GENERATE模式生成语句用来产生具有相同结构的四个触发器。 IF- GENERATE模式生成语句 IF- GENERATE模式生成语句的书写格式如下: 标号:IF 条件 GENERATE ; END GENERATE 标号; IF- GENERATE模式生成语句主要用来描述一个结构中的例外情况,例如,某些边界条件的特殊性。当执行到该语句时首先进行条件判断,如果条件为

8、“TRUE”才会执行生成语句中的并行处理语句;如果条件为“FALSE”,则不执行该语句。 例: IF- GENERATE模式生成语句应用 LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY shift_reg IS PORT; END shift_reg; ARCHITECTURE structure OF shift_reg IS COMPONENT dff PORT; END COMPONENT; SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 1); BEGIN label1: FOR i IN 0 TO 3 GEN

9、ERATE IFGENERATE dffx:dff PORT MAP (di,cp,q); END GENERATE; IFGENERATE dffx:dff PORT MAP (q,cp,do); END GENERATE; IFAND)GENERATE dffx:dff PORT MAP (q,cp,q); END GENERATE; END GENERATE label1; END structure; 在例的结构体中,FOR- GENERATE模式生成语句中使用了IF- GENERATE模式生成语句。IF- GENERATE模式生成语句首先进行条件i = 0和i = 3的判断,即判断所产生的D触发器是移位寄存器的第一级还是最后一级;如果是第一级触发器,就将寄存器的输入信号di代入到PORT MAP语句中;如果是最后一级触发器,就将寄存器的输出信号do代入到PORT MAP语句中。这样就解决了硬件电路中输入输出端口具有不规则性所带来的问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号