输入寄存器是如何在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经典帮助中。
添加评论