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語句。

四、仿真驗證

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM