描述
我正在编码以推断块RAM;在我的代码中有未使用的地址行,XST发出以下警告:
警告:XST:646 -信号LT;AdvestsA a & gt;指定但从未使用。
警告:XST:647 -输入& lt;AdvestsB& & Gt;从未使用过。
此外,XST将代替分布式RAM来推断分布式RAM。这些示例说明包含太多地址行:
Verilog:
模块RAM1(CLK,EN,我们,ADDR,DI,DO);
参数地址宽度=5;
参数数据宽度=10;
参数RAMIFACH=10;
输入CLK,EN,我们;
输入[地址宽度-1:0 ] ADDR;
输入[数据宽度-1:0] di;
输出[数据宽度-1:0];
Reg [DATAWIDWH-1:0] RAM [RAMDESTH-1:0];
Reg [ AdvrsWist-1:0] Read AddiDR;
总是@(POSEDGE CLK)
开始
如果(EN=1’B1)
开始
如果(我们=1’B1)
RAM[ADDR]=DI;
ADRDR;
结束
结束
分配DO=RAM [读数ADDR];
终端模块
VHDL:
库IEEE;
使用IEEE.STDYLogiCy1164.ALL;
使用IEEE.STDLogLogic UNSIGNED;
实体RAM1是
泛型(地址宽度:整数:=5);
数据宽度:整数:=10;
RAMiSime:整数:=10);
端口(DI):在STDYLogLogic向量(数据宽度- 1下降到0);
ADDR:在StdLogLogic向量中(AddiSrS-宽度1下降到0);
CLK:在STDYLogic中;
在STDYLogic中;
我们:在STDYLogic中;
DO:StdLogLogic向量(数据宽度-1下降到0);
结束实体;
RAM1建筑结构
RAMY-Type类型为StdLogLogic向量数组(DATAWITH—1下降到0)(RAMDIFEST – 1下降到0);
信号RAM:RAMOX型;
信号读写:STDYLogLogic向量(地址宽度- 1下降到0);
开始
过程(CLK)
开始
如果CLK’事件和CLK =“1”,那么
如果EN=‘1’,那么
如果我们=“1”,那么
RAM(对流整数(ADDR))& lt;=di;
如果结束;
ADRDR;
如果结束;
如果结束;
结束过程;
Do & lt;=RAM(Vube整数(Read SydAdR));
架构结束;
解决方案
为了避免这些警告,在HDL代码中裁剪地址线以正确地反映将被使用的实际地址:
Verilog:
模块RAM1(CLK,EN,我们,ADDR,DI,DO);
参数地址宽度=4;/地址宽度从5变为4
参数数据宽度=10;
参数RAMIFACH=10;
输入CLK,EN,我们;
输入[地址宽度-1:0 ] ADDR;
输入[数据宽度-1:0] di;
输出[数据宽度-1:0];
Reg [DATAWIDWH-1:0] RAM [RAMDESTH-1:0];
Reg [ AdvrsWist-1:0] Read AddiDR;
总是@(POSEDGE CLK)
开始
如果(EN=1’B1)
开始
如果(我们=1’B1)
RAM[ADDR]=DI;
ADRDR;
结束
结束
分配DO=RAM [读数ADDR];
终端模块
这是通过ISE 5.2i的发布来修复的。
为了避免这些警告,在HDL代码中裁剪地址线以正确地反映将被使用的实际地址:
VHDL:
库IEEE;
使用IEEE.STDYLogiCy1164.ALL;
使用IEEE.STDLogLogic UNSIGNED;
实体RAM1是
泛型(地址宽度:整数:=4),地址宽度从5变为4
数据宽度:整数:=10;
RAMiSime:整数:=10);
端口(DI):在STDYLogLogic向量(数据宽度- 1下降到0);
ADDR:在StdLogLogic向量中(AddiSrS-宽度1下降到0);
CLK:在STDYLogic中;
在STDYLogic中;
我们:在STDYLogic中;
DO:StdLogLogic向量(数据宽度-1下降到0);
结束实体;
RAM1建筑结构
RAMY-Type类型为StdLogLogic向量数组(DATAWITH—1下降到0)(RAMDIFEST – 1下降到0);
信号RAM:RAMOX型;
信号读写:STDYLogLogic向量(地址宽度- 1下降到0);
开始
过程(CLK)
开始
如果CLK’事件和CLK =“1”,那么
如果EN=‘1’,那么
如果我们=“1”,那么
RAM(对流整数(ADDR))& lt;=di;
如果结束;
ADRDR;
如果结束;
如果结束;
结束过程;
Do & lt;=RAM(Vube整数(Read SydAdR));
架构结束;
没有回复内容