描述
关键词:SypLIPIVE、Verilog、VHDL
紧迫性:标准
一般描述:
SypPrimes不能推断注册三态驱动程序的使能逻辑。
SypPrimes将发布此错误消息:
不支持在多个时钟周期中存储“Z”值
FLoppTB。”
至于版本5.0.8a和以后,SypLID的HDL支持已经
增强识别Z(高阻抗)的存储
现在对VHDL和Verilog都支持多个时钟周期。
如果您使用的版本比5.0.8更早,请升级为
从SypulyIt的SyPrime:
HTTP://www. SyPrimy.COM/Sputt.HTML
然而,解决这个问题的方法是明确声明一个
使能信号及其逻辑。
解决方案
一
VHDL语言
—-
示例1将不会在5.0.8之前用SypPrimes的版本进行合成。
例2解决这个问题的方法。
例1
———-
图书馆IEEE;
使用IEEE.STDYLogiCy1164.ALL;
实体示例是
端口(din in,CLK,rST,eNB:在STDYLogic中;
QXOUT:输出STDYLogic;
结束示例;
建筑Xilinx的例子是
开始
进程(din in,CLK,rST)
开始
如果(RST=‘1’)
qyOUT & lt;=’z’;
然后,ELSIF RISIGIN EDGE(CLK)
如果(eNB=‘1’)然后
qyOUT & lt;=din in;
其他的
qyOUT & lt;=’z’;
如果结束;
如果结束;
结束过程;
末端Xilinx;
例2
———-
图书馆IEEE;
使用IEEE.STDYLogiCy1164.ALL;
实体示例是
端口(din in,CLK,rST,eNB:在STDYLogic中;
QXOUT:输出STDYLogic;
结束示例;
建筑Xilinx的例子是
信号QYOUTXEN,QYOUTYRE:STDYLogic;
开始
qyOUT & lt=qyOutthReg时(qyOutoEn==1)否则“z”;
进程(din in,CLK,rST)
开始
如果(RST=‘1’)
QuutouthRe<=‘0’;
Q’OutuxEn<=“0”;
然后,ELSIF RISIGIN EDGE(CLK)
QuutouthRe<
QueOutoGeNe;
如果结束;
结束过程;
末端Xilinx;
二
Verilog
—–
示例1将不会在5.0.8之前用SypPrimes的版本进行合成。
例2解决这个问题的方法。
例1
———-
模块示例(DIN,CLK,RST,ENB,QOU-OUT);
输入DIN,CLK,RST,ENB;
输出QOU-OUT;
雷格;
总是@(PaseLK CLK或PASEDEST RST)
如果(RST)!eNB)
QuOUT=1’BZ;
其他的
qyOUT=din in;
终端模块
例2
———-
模块示例(DIN,CLK,RST,ENB,QOU-OUT);
输入DIN,CLK,RST,ENB;
输出QOU-OUT;
ReqQuututhEn,QuutouthReg;
分配QyOUT=(QyOutuxEN)?QuutouthReg:1’BZ;
总是@(PaseLK CLK或PASEDEST RST)
如果(RST)
开始
QuutouthReg=0;
QuoTuxEn=0;
结束
其他的
开始
qyOutsReg=din in;
QuutouthEn:Enb;
结束
终端模块
没有回复内容