MDY常用的数据选择语句
本文为明德扬原创及录用文章,转载请注明出处!Verilog语法中有一个常用的选择语句,其语法形式为:
vect或vect ;
vect为变量名字,a为起始位置,加号或者减号代表着升序或者降序,b是进行升序或者降序的宽度。
vect等同于vect,vect的区间从a开始,往比a大的方向数b个数;vect 等同于vect,vect的区间从a开始,往比a小的方向数b个数。a可以是一个常数也可以是一个可变的数,但b必须是一个常数。
例1:vect;
其中,起始位置为7,+代表着升序,宽度为3。即从7开始往比7大的方向数3个数。其等价形式为:vect==vect。
例2:vect;
其中,起始位置为9,-代表着降序,宽度为4。即从9开始往比9小的方向数4个数。其等价形式为:vect==vect。
在实际使用的过程中,这个语法最常用的形式是将a作为一个可变的数来使用。例如需要设计如下代码:
当cnt==0时,将din赋值给data;当cnt==1时将din赋值给data。
在设计的时候便可以写成:data <= din(这里需要把15-8*cnt看成一个整体a,它是一个随着cnt变化而变化的数)。这样就可以精简我们的代码了。
选择语句的硬件电路结构如下图31所示,本质上是个选择器。当cnt==0时,选中data的锁存器,将din赋值给data,而data的锁存器保持输出不变;当cnt==1时,选中data的锁存器,将din赋值给data,而data的锁存器保持输出不变。
图31选择语句硬件电路图
用Modelsim对上面的例子进行一下功能仿真,仿真图如下:
图32 仿真的波形图
仿真结果满足实际的设计需求。
笔者经验:在实际工程中可以多多使用选择语句vect或vect 的形式来写代码,这将有助于精简设计代码。
对学习有帮助 非常不错,谢谢
页:
[1]