FPGA学习笔记06-VHDL语法基础-生成语句(generate)
Posted 伊可的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA学习笔记06-VHDL语法基础-生成语句(generate)相关的知识,希望对你有一定的参考价值。
目录
一、概述
二、形式
三、程序示例
四、仿真说明
一、概述
GENERATE 语句用来产生多个相同的结构和描述规则结构,如阵列、元件例化和进程。
二、形式
1. FOR-GENERATE 形式的生成语句
(1)说明:该生成语句用于描述多重模式,结构中所列举的是并发处理语句。这些语句并发执行而不是顺序执行,因此结构中不能用EXIT和NEXT语句;
(2)书写格式:
1 标号:FOR 变量 IN 不连续区间 GENERATE 2 <并发处理的生成语句> 3 END GENERATE [标号名];
2. IF-GENERATE 形式的生成语句
(1)说明:该语句用于描述结构的例外情况,如边界处发生的特殊情况。
(2)书写格式:
1 标号:IF 条件 GENERATE 2 <并发处理的生成语句> 3 END GENERATE[标号名];
三、程序示例
- 4位移位寄存器的设计
library ieee; use ieee.std_logic_1164.all; entity shift_register is port(a,clk:in std_logic;b:out std_logic); end shift_register; architecture four_bit_shift_register of shift_register is component dff port(a,clk:in std_logic;b:out std_logic); end component; signal x : std_logic_vector(0 to 4); begin x(0) <= a; dff1: dff port map(x(0),clk,x(1)); dff2: dff port map(x(1),clk,x(2)); dff3: dff port map(x(2),clk,x(3)); dff4: dff port map(x(3),clk,x(4)); B <= x(4); end architecture four_bit_shift_register;
- 用generate语句设计4位移位寄存器
library ieee; use ieee.std_logic_1164.all; entity shift_register is port(a,clk:in std_logic;b:out std_logic); end shift_register; architecture four_bit_shift_register of shift_register is component dff port(a,clk:in std_logic;b:out std_logic); end component; signal X: std_logic_vector(0 to 4); begin x(0)<=a; register1:for i in 0 to 3 GENERATE dff:dff port map(x(i),clk,x(i+1)); end GENERATE; B <= X(4); END architecture four_shift_register;
- n 位寄存器的设计
library ieee; use ieee.std_logic_1164.all; entity shift_register is port(a,clk:in std_logic;b:out std_logic); end shift_register; architecture four_bit_shift_register of shift_register is component dff port(a,clk:in std_logic;b:out std_logic); end component; signal X: std_logic_vector(0 to 4); begin register1:FOR i IN 0 TO (n-1) GENERATE IF i=0 GENERATE dffx:dff PORT MAP (a,clk,X(i+1)); END GENERATE; IF (i>=0) and i/=(n-1) GENERATE dffx:dff PORT MAP(X(i),clk,b); END GENERATE; IF i=(n-1) GENERATER dffx:dff PORT MAP( X(i+1),clk,b); END GENERATE; END architecture IF_Gererate_Shifter;
说明:
FOR-GENERATE语句中,FOR的作用和在FOR-LOOP语句中的作用相当。
FOR-LOOP内部顺序语句,FOR-GENERATE内部并行语句;
变量i无需预定义,在模块中不可见,也不能赋值。
FOR-GENERATE语句设计规则体,不规则体可用IF-GENERATE语句。
四、仿真验证
以上是关于FPGA学习笔记06-VHDL语法基础-生成语句(generate)的主要内容,如果未能解决你的问题,请参考以下文章
FPGA/verilog 学习笔记—— Verilog基础语法