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基础语法

FPGA/verilog 学习笔记—— verilog程序框架

FPGA学习笔记——FPGA学习路线及开发流程

FPGA学习笔记——Verilog基本语法

Rust学习笔记1.基础语法

Rust学习笔记1.基础语法