正文

for generate 语句用法示例2007-05-31 00:25:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/vfdff/26280.html

分享到:

-- -- 对 megafunction wizard 生成的文件lpm_dff1.vhd改装为  dff1.vhd , 增加了 位定义的灵活性 -- ============================================================-- File Name: dff1.vhd LIBRARY ieee;USE ieee.std_logic_1164.all; LIBRARY lpm;USE lpm.all; ENTITY dff1 IS GENERIC (lpm_width  : NATURAL := 8 ); PORT (  clock  : IN STD_LOGIC ;  data  : IN STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);  q  : OUT STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0) );END dff1; ARCHITECTURE SYN OF dff1 IS  SIGNAL sub_wire0 : STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);    COMPONENT lpm_ff GENERIC (  lpm_fftype  : STRING;  lpm_type  : STRING;  lpm_width  : NATURAL ); PORT (   clock : IN STD_LOGIC ;   q : OUT STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);   data : IN STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0) ); END COMPONENT; BEGIN q    <= sub_wire0(lpm_width-1 DOWNTO 0);  lpm_ff_component : lpm_ff GENERIC MAP (  lpm_fftype => "DFF",  lpm_type => "LPM_FF",  lpm_width => lpm_width ) PORT MAP (  clock => clock,  data => data,  q => sub_wire0 );   END SYN; ---------------------------------------------------------------------------------------------------- -- 在文件 dff1.vhd的基础长,增加延时周期数设置的灵活性,使用for generate语句实现 2007.5.28 -- 可以灵活的对不同位数及不同延迟周期进行设置 library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all; entity dffN is generic( N_CYCLES    :integer := 2;    lpm_width  : NATURAL := 10 ); -- 至少    port(    data_adr : IN STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);  clk   : IN STD_LOGIC ;  q_adr  : OUT STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0)    );end dffN; architecture vr1 of dffN is  component dff1 GENERIC (lpm_width  : NATURAL ); PORT (  clock : IN STD_LOGIC ;  data : IN STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);  q  : OUT STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0)); end component;  TYPE TEMP_ARRAY IS ARRAY (0 TO N_CYCLES-2 )OF STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0); SIGNAL Q : TEMP_ARRAY; begin   U0_dff1 :dff1   GENERIC MAP(lpm_width  =>lpm_width )    port map(    clock    => clk,  data  => data_adr,        q   => Q(0));  GEN :for I in 1 to N_CYCLES-2 generate  -- 标志符中英文字符不分大小写        U_dff1 :dff1   GENERIC MAP(lpm_width  =>lpm_width )      port map(clock => clk,data=> Q(I-1),q=> Q(I));  end generate;  U1_dff1 :dff1  GENERIC MAP(lpm_width  =>lpm_width )     port map(    clock    => clk,  data  => Q(N_CYCLES-2),        q   => q_adr); end vr1;

阅读(4856) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册