输入寄存器是如何在ISPMACH 4000 V/B/C/Z/ZE系列中实现的?

在ISPMACH 4000 V/B/C/Z/ZE族中,输入寄存器可以通过直接将输入引脚路由到宏单元寄存器来实现。我们可以使用输入寄存器来实现最快的设置时间。为了实现输入寄存器,我们应该在源代码或约束编辑器中添加输入信号的属性。下面是在Verilog/VHDL中添加属性LATIN输入寄存器的例子。

在Verilog中

module t_inreg(clk,rst,ce,din,dout);
input clk,rst,ce;
input din /* synthesis LAT_INPUT_REGISTER="inreg" */;
output dout;

reg [1:0] din_r;

always @(posedge clk or posedge rst)
   if (rst)
      din_r <= 2'b0;
   else
      if (ce)
         din_r <= {din_r[0],din}

assign dout = din_r[1];

endmodule

在VHDL

library ieee;
use ieee.std_logic_1164.all;

entity t_inreg is
    port (clk : in std_logic;
          rst : in std_logic;
          ce : in std_logic;
          din : in std_logic;
          dout : out std_logic);

ATTRIBUTE LAT_INPUT_REGISTER: String;
ATTRIBUTE LAT_INPUT_REGISTER OF din: SIGNAL IS "inreg";

end t_inreg;

architecture behave of t_inreg is

signal din_r : std_logic_vector(1 downto 0);

begin

process (rst, clk)
   begin
      if  rst = '1' then
         din_r <= (others => '0');
      elsif  rising_edge(clk) then
           if ce = '1' then
            din_r <= din_r(0) & din;
         end if;  
      end if;
   end process;

dout <= din_r(1);

end behave;

此外,我们可以将输入引脚(例如,上述情况下的DIN)的输入寄存器属性设置为约束编辑器的PIN属性中的ReRg。

如果输入寄存器转到输出引脚,我们必须将属性添加到输出引脚。下面给出类似的Verilog/VHDL实例。


在Verilog中

module t_inreg(clk,rst,ce,din,dout);
input  clk,rst,ce;
input  din ;
output dout /* synthesis LAT_INPUT_REGISTER="inreg" */;

reg din_r;

always @(posedge clk or posedge rst)
   if (rst)
      din_r <= 1'b0;
   else
      if (ce)
         din_r <= din;

assign dout = din_r;

endmodule

在VHDL

library ieee;
use ieee.std_logic_1164.all;

entity t_inreg is
    port (clk : in std_logic;
          rst : in std_logic;
          ce : in std_logic;
          din : in std_logic;
          dout : out std_logic);

ATTRIBUTE LAT_INPUT_REGISTER: String;
ATTRIBUTE LAT_INPUT_REGISTER OF dout: SIGNAL IS "inreg";

end t_inreg;

architecture behave of t_inreg is

signal din_r : std_logic;

begin

process (rst, clk)
   begin
      if  rst = '1' then
         din_r <= '0';
      elsif  rising_edge(clk) then
           if ce = '1' then
            din_r <= din;
         end if;  
      end if;
   end process;

dout <= din_r;

end behave;

但是,对于约束编辑器中的输出信号,不能添加输入寄存器属性。我们可以在LCT文件的[输入寄存器]部分手动添加“iReg=DUT”。

有关输入寄存器的更多细节,请参阅设计约束->源约束描述->输入寄存器,设计约束->源约束描述->全局和默认约束->LaTuxInPutsReistabl缺省值和约束编辑器->iBTES->输入寄存器在ISPLION经典帮助中。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-27 11:42:01 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它