【发布时间】:2015-01-27 18:36:56
【问题描述】:
我在一个进程中使用 3 个时钟时遇到了问题 如果我做一个这样的过程: HC1,HC2 可以同时工作,比 H 慢很多,H 是基准时钟,工作在 16MHZ。
entity fifo is
Port ( H : in STD_LOGIC;
HC1 : in STD_LOGIC;
HC2 : in STD_LOGIC;
C1data : in STD_LOGIC_VECTOR (2 downto 0);
C2data : in STD_LOGIC_VECTOR (2 downto 0);
Buffer1 : out STD_LOGIC_VECTOR (3 downto 0);
Buffer2 : out STD_LOGIC_VECTOR (3 downto 0));
end fifo;
architecture Behavioral of fifo is
signal Full1,Full2 : STD_LOGIC;
begin
process(H,HC1,HC2)
begin
if(rising_edge(H)) then
Full1 <= '0';
Full2 <= '0';
else
if(rising_edge(HC1)) then
Buffer1(3 downto 1) <= C1data;
Buffer1(0) <= C1data(2) xor C1data(1) xor C1data(0);
Full1 <= '1';
end if;
if(rising_edge(HC2)) then
Buffer2(3 downto 1) <= C2data;
Buffer2(0) <= C2data(2) xor C2data(1) xor C2data(0);
Full2 <= '1';
end if;
end if;
结束进程;
它说:
错误:Xst:827 -“C:/Users/Administrator/Desktop/test/justatest/fifo.vhd”第 45 行:无法合成 Signal Buffer1,同步描述错误。当前软件版本不支持您用于描述同步元素(寄存器、内存等)的描述样式。
为什么?非常感谢!
【问题讨论】:
-
好吧,我强烈建议您修复您的问题布局,以帮助我们先破译您的代码。 :D
-
您可能需要一个时钟和多个“负载”信号等。我还建议先对此进行模拟,看看它是否按照您想要的方式运行,是否有错误的综合代码。
-
如果您要查看 XST 用户指南(例如 UG627 v 14.5),您会发现带有一个时钟的 if 语句和带有另一个时钟的 elsif 语句在 VHDL Sequential 下没有被列为支持电路,带有敏感度列表的 VHDL 顺序过程。
-
关于您的错误消息,我假设目标设备是 Xilinx FPGA。但是哪个 Xilinx FPGA 可以在一个硬宏中支持 3 个时钟?所有内部存储器元件都是单时钟(FF、SRL、...)或双时钟(BlockRAM),没有三时钟组件。信号
HC1和HC2甚至是真实时钟信号还是更像使能信号。如果是这样,则使用上升沿检测(一个 FF 加和一个 AND2B1 门)。否则我会建议搜索跨时钟技术。
标签: vhdl