数字电路设计盲点实例与对策分析
【算数演算Package变成Compile】
※现象
利用VHDL设计PDL将List13-1的Source Code Compile时发生错误(Error)。List13-2是Therinks公司的WebPackISE,经过程序编写(Compile)时的部份Rep ort File,由该List可知错误的原因可能是利用第25,26,31,32行的程序进行算数演算时出现Error,不过第3行却可叫出算数演算Package std_logic_ arith。
List13-2 用WebPackISE将List13-1 Compile时的部份Report File
※原因分析
虽然std_logic_arith是属于可以演算signed与unsigned两者的算数演算Package,不过却无法直接处理std_logic_vector的数据形式(Data Type),是发生问题的主要原因。
※对策
最简单的对策是在第3行将呼叫Package,变更成std_logic_unsigned或是std_ logic_signed。以List13-1为例如果要将Input的A与B、Output的C以无码方式处理,祇需将第3行的叙述更改成如下所示即可。
Use IEEE.std_logic_unsigned.all;
另一种对策是将算数演算的信号从std_logic_vector的数据形式变更成signed或是unsigned。以List13-3而言是在第17行以unsigned宣示算数演算的信号,接着在第21行与第22行代入A与B,由于无法直接将std_logic_vector直接代入unsigned,所以连结std_logic后才代入。实际上进行算数演算时是使用第28,29,34,35右边unsigned的信号,此时未作数据形式转换直接将unsigned代入std_logic_vector,不过由于进行理论演算的30~33行无法使用unsigned,因此改用std_logic_vector。
还有一种对策是使用Type变换关数法,List13-4就是使用变换关数法的例子,具体方法是利用25,26,31,32行所谓的unsigned Type变换关数,将std_lo gic_vector变换成unsigned,由于这些关数包含在std_logic_arith Package内,所以并不需要呼叫其它的Package。
【利用16进位叙述Counter值就发生错误】
※现象
接着要介绍利用VHDL设计逻辑电路经常发生的错误。List14-1是叙述Counter的实例,由于Counter的位数非常多,如果用2进位叙述Counter相当烦琐,所以改用16进位叙述,例如List14-1的第31行ADD_fb信号是16位std_logic_vect or,如果用2进位叙述则多达16行,而16进位祇有4行,不过将List14-1Compile会因用Compiler会产生Error。
※原因分析
主要原因是std_logic_vector祇允许2进位叙述,虽然某些程序编写器(Compil er)允许这种方式,不过却很容易发生错误(Error)。std_logic_vector祇允许2进位主要原因是std_logic的抓取值是0与1之外的数字,List14-1表示std_logi c的抓取值,由List可知该值表示逻辑电路信号线的状态,例如Z表示高阻(High Impedance)状态,而High Impedance状态却对该值不具任何意义,因此不论是2进位或是16进位都无法叙述。2进位允许的叙述会被当作一次元配列处理,例如所谓的”ZZZ ”的std_logic_vector(0到3),事实上是表示4位信号全部都是高阻抗(High Impedance)状态。
表14-1 std_logic的抓取值抓取值定义
※对策
最简单的对策是将数据形式(Data Type)变更成bit_vector,所的Data Type的抓取值祇有0与1,所以允许2进位以外8进位、16进位的叙述,不过某些情况却不适用,例如List14-1的第42行欲作ADDR_fb<=(other=>’-‘)时,就无法将AD DR_fb作成bit_vector,此时必需使用Type关数变换作以下的叙述:
ADDR_fb<=To_stdlogicvector)x”FFFC”);
所谓的To_stdlogicvector关数,是将位bit_vector转换成std_logic_vector的关数,值得一提的是关数名称会因Compiler有所不同,因此必需事先确认Com piler的使用说明(Manual)避免会产生错误(Error)。
图片新闻
技术文库
最新活动更多
-
即日-12.26立即报名>>> 【在线会议】村田用于AR/VR设计开发解决方案
-
1月8日火热报名中>> Allegro助力汽车电气化和底盘解决方案优化在线研讨会
-
1月9日立即预约>>> 【直播】ADI电能计量方案:新一代直流表、EV充电器和S级电能表
-
即日-1.14火热报名中>> OFweek2025中国智造CIO在线峰会
-
即日-1.20限时下载>>> 爱德克(IDEC)设备及工业现场安全解决方案
-
即日-1.24立即参与>>> 【限时免费】安森美:Treo 平台带来出色的精密模拟
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论