描述
关键字:SyopSyS,FPGA Express,3.3,3.5,推断,ROM,原语,VyTeX,ViTEX-E,ViTEX II,选择RAM,块,RAM
紧迫性:标准
一般描述:
我如何推断VRTEX、ViTEX-E和ViTEX II的ROM?
解决方案
一
如果使用下面描述的语法,FPGA Express版本3.3和以上有能力为ViTeX设计推断ROM原语。必须注意三点:
1。一定要定义至少75%的状态。(50%)的状态可以定义,如果使用“推断MUX”属性。
2。这些组件将作为LUT4S写入到EDIF网表中,而不是ROM16X1S。
三。此特性仅适用于基于VIETEX的体系结构。
目前,FPGAExpress无法推断RAM。
从VelTeX、ViTeX-E和ViTEX II的FPGA Express 3.5开始,将在以下情况下推断ROM(而不是LUTs)的块RAM:
为VIETEX和VIETEX-E当地址线至少为10位,数据线为3位或更大时,将推断块RAM。此外,当地址行为11或12位时,将推断块RAM,不需要最小数据宽度。
为VIETEX II如果地址线在10到14位之间,则将为ROM推断块RAM,不需要最小的数据宽度。
有关“IfultMUX”属性的更多信息,请参阅(赛灵思解答11331).
-以下VHDL语言代码将在八个LUT中实现(每个输出位都有两个):
进程(地址)
开始
案例地址是
当“00000”=& t;输出& lt=“1110”;
当“00001”=& t;输出& lt=“0100”;
当“00010”=& t;输出& lt=“1101”;
当“00011”=& t;输出& lt=“0001”;
当“00100”=& t;输出& lt=“0010”;
当“00101”=& t;输出& lt=“1111”;
当“00110”=& t;输出& lt=“1011”;
当“00111”=& t;输出& lt=“1000”;
当“01000”=& t;输出& lt=“0011”;
当“01001”=& t;输出& lt=“1010”;
当“01010”=& t;输出& lt=“0110”;
当“01011”=& t;输出& lt=“1100”;
当“01100”=& t;输出& lt=“0101”;
当“01101”=& t;输出& lt=“1001”;
当“01110”=& t;输出& lt=“0000”;
当“01111”=& t;输出& lt=“0111”;
当“10000”=& t;输出& lt=“0000”;
当“10001”=& t;输出& lt=“1111”;
当“10010”=& t;输出& lt=“0111”;
当“10011”=& t;输出& lt=“0100”;
当“10100”=& t;输出& lt=“1110”;
当“10101”=& t;输出& lt=“0010”;
当“10110”=& t;输出& lt=“1101”;
当“10111”=& t;输出& lt=“0001”;
当“11000”=& t;输出& lt=“1010”;
当“11001”=& t;输出& lt=“0110”;
当“11010”=& t;输出& lt=“1100”;
当“11011”=& t;输出& lt=“1011”;
当“11100”=& t;输出& lt=“1001”;
当“11101”=& t;输出& lt=“0101”;
当“11110”=& t;输出& lt=“0011”;
当“11111”=& t;输出& lt=“1101”;
当别人= & t;输出& lt=“1101”;
结束情况;
结束过程;
-以下VHDL语言代码将在八个LUT(每个输出位的两个)中使用“FieldMUX”属性实现:
进程(地址)
开始
案例地址是——SyopSysBaseMulx
当“00000”=& t;输出& lt=“1110”;
当“00001”=& t;输出& lt=“0100”;
当“00010”=& t;输出& lt=“1101”;
当“00011”=& t;输出& lt=“0001”;
当“00100”=& t;输出& lt=“0010”;
当“00101”=& t;输出& lt=“1111”;
当“00110”=& t;输出& lt=“1011”;
当“00111”=& t;输出& lt=“1000”;
当“01000”=& t;输出& lt=“0011”;
当“01001”=& t;输出& lt=“1010”;
当“01010”=& t;输出& lt=“0110”;
当“01011”=& t;输出& lt=“1100”;
当“01100”=& t;输出& lt=“0101”;
当“01101”=& t;输出& lt=“1001”;
当“01110”=& t;输出& lt=“0000”;
当“01111”=& t;输出& lt=“0111”;
当“10000”=& t;输出& lt=“0000”;
当别人= & t;输出& lt=“1101”;
结束情况;
结束过程;
注意:FPGA Express中的一个bug阻止了使用块RAM的ROM被正确推断。
这个问题固定在最新的4.2i服务包中,可在:
HTTP://Spop.xILIX.COM/Sputp/TekSuff/SWI更新
包含修复的第一服务包是4.2i服务包2。
请下载并安装有4.1i Service PACK 2的FPGA Express版本。
二
-以下Verilog代码将在八个LUT中实现(每个输出位都有两个):
总是@(地址)
开始
案例(地址)
5’B0000:ROMUTE=4’B1110;
5’B01001:ROMUTE=4’B0100;
5’B000 010:ROMUTE=4’B110;
5’B000 011:ROMUTH=4’B00 01;
5’B00 100:ROMUT=4’B00 10;
5’B00 101:ROMUT=4’B1111;
5’B00 110:ROOUT=4’B1011;
5’B00 111:ROMUTH=4’B1000;
5’B01000:ROMUTE=4’B00 11;
5’B01001:ROMUTE=4’B1010;
5’B01010:ROMUTE=4’B0110;
5’B01011:ROMUTE=4’B1100;
5’B01100:ROOUTH=4’B0101;
5’B0101:ROMUTH=4’B1001;
5’B01110:ROMUTE=4’BMUN;
5’B01111: ROMUTE=4’B0111;
5’B10000:ROMUTE=4’BMUN;
5’B10001:ROMUTE=4’B1111;
5’B10010:ROMUTE=4’B0111;
5’B10011:ROMUTE=4’B0100;
5’B10100:ROMUTE=4’B1110;
5’B10101:ROMUTE=4’B00 10;
5’B10110:ROMUTH=4’B110;
5’B10111:ROMUTE=4’B00 01;
5’B11000:ROMUTE=4’B1010;
5’B11001:ROMUTE=4’B0110;
5’B110:ROMUTH=4’B1100;
5’B111:ROOUT=4’B1011;
5’B11100:ROMUTH=4’B1001;
5’B11101:ROMUTE=4’B0101;
5’B11110:ROMUTH=4’B00 11;
5’B11111:ROMUTH=4’B110;
默认值:ROMUTE=4’B110;
端部病例
结束
-以下Verilog代码将在八个LUT(每个输出位的两个)中使用“FieldMUX”属性实现:
总是@(地址)
开始
案例(地址)//
5’B0000:ROMUTE=4’B1110;
5’B01001:ROMUTE=4’B0100;
5’B000 010:ROMUTE=4’B110;
5’B000 011:ROMUTH=4’B00 01;
5’B00 100:ROMUT=4’B00 10;
5’B00 101:ROMUT=4’B1111;
5’B00 110:ROOUT=4’B1011;
5’B00 111:ROMUTH=4’B1000;
5’B01000:ROMUTE=4’B00 11;
5’B01001:ROMUTE=4’B1010;
5’B01010:ROMUTE=4’B0110;
5’B01011:ROMUTE=4’B1100;
5’B01100:ROOUTH=4’B0101;
5’B0101:ROMUTH=4’B1001;
5’B01110:ROMUTE=4’BMUN;
5’B01111: ROMUTE=4’B0111;
5’B10000:ROMUTE=4’BMUN;
默认值:ROMUTE=4’B110;
端部病例
结束
注意:FPGA Express中的一个bug阻止了使用块RAM的ROM被正确推断。
这个问题固定在最新的4.2i服务包中,可在:
HTTP://Spop.xILIX.COM/Sputp/TekSuff/SWI更新
包含修复的第一服务包是4.2i服务包2。
请下载并安装有4.1i Service PACK 2的FPGA Express版本。
没有回复内容