我为我的16位MIPS架构写了一个寄存器文件,这里我确保我的register0包含所有的零,没有语法错误,但是我有一些问题。
这些是我收到的警告
WARNING:Xst:819 - "E:/Xilinx Projects/regfile/regfile.vhd" line 49: One or more signals are missing in the process sensitivity list. To enable synthesis of FPGA/CPLD hardware, XST will assume that all necessary signals are present in the sensitivity list. Please note that the result of the synthesis may differ from the initial design specification. The missing signals are:<w_en>, <w_data>
WARNING:Xst:819 - "E:/Xilinx Projects/regfile/regfile.vhd" line 58: One or more signals are missing in the process sensitivity list. To enable synthesis of FPGA/CPLD hardware, XST will assume that all necessary signals are present in the sensitivity list. Please note that the result of the synthesis may differ from the initial design specification. The missing signals are: <RegisterFile>
WARNING:Xst:737 - Found 16-bit latch for signal <RegisterFile_15>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.
WARNING:Xst:737 - Found 16-bit latch for signal <RegisterFile_14>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.
WARNING:Xst:737 - Found 16-bit latch for signal <RegisterFile_13>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.
WARNING:Xst:737 - Found 16-bit latch for signal <RegisterFile_12>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.
WARNING:Xst:737 - Found 16-bit latch for signal <RegisterFile_11>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.发布于 2014-05-02 13:36:49
1.行:
if (clk = '1') then应当是:
if (clk'event and clk = '1') then或者:
if rising_edge(clk) then这就是创建锁锁的地方。虽然事件似乎应该被敏感性列表所暗示,但它需要明确的综合工具来正确地推断一个触发器。
2. to_integer(unsigned(r_addr1)=0) --你的意思是to_integer(unsigned(r_addr1))=0 (哪个应该工作得很好)?注意与括号相匹配。顺便说一句,unsigned将其与整数字面值进行了比较,因此这里不需要to_integer。只要unsigned(r_addr1)=0就行了。
发布于 2014-05-02 13:38:14
您的时钟进程写得不正确。工具没有意识到clk实际上是一个时钟。您需要使用clk‘’event,或者更好地使用rising_edge()。这些工具正在创建一个组合过程,而不是一个连续的过程。因为if语句没有其他条件,所以它使RegisterFile成为锁存器。以下是关于什么是锁存器以及如何避免FPGA中的锁存。的更多信息
process(clk)
begin
if rising_edge(clk) then
if w_en = '1' then
RegisterFile(to_integer(unsigned(w_addr))) <= w_data;
end if;
end if;
end process;https://stackoverflow.com/questions/23429232
复制相似问题