编码器参数化的方法

编码器参数化的方法

导语:由于该设计是可参数化的,所谓“参数化”就是通过设置输入数据的位宽就能实现相应数据位宽的编码器。假设编码器的输入数据位宽为A,输出数据位宽为B,由我们所学的数电知识可知其关系为B=log2(A),其中log2(x)是以2为底的对数函数。而VerilogHDL中有与其对应的系统函数:$clog2(x)。 由于该设计是可参数化的,所谓“参数化”就是通过设置输入数据的位宽就能实现相应数据位宽的编码器。假设编码器的输入数据位宽为A,输出数据位宽为B,由我们所学的数电知识可知其关系为B=log2(A),其中log2(x)是以2为底的对数函数。而VerilogHDL中有与其对应的系统函数:$clog2(x)。 实现该编码器的方法:第一,通过遍历数据位的方法;第二,通过推导公式的方法。 <1>通过遍历数据位的方法有两种,都是借助for循环来实现的。第一种方法是从输入数据的低位向高位遍历,并判断遍历到的数据位是否为1,若为1,则其对应的二进制码就是编码器的输出。另一种方法是从输入数据的高位向低位遍历,并判断遍历到的数据位是否为1,若为1,则其对应的二进制码就是编码器的输出。 <2>通过推导公式的方法。下面是8-3编码器的输入输出对应关系: 再总结下上述公式,编码器输出的某个位可由可能导致该位为1的输入位进行或运算的结果决定,如编码器输入din中所有二进制索引号第0位为1的位进行或运算,便得到编码器输出第0位dout[0];编码器输入din中所有二进制索引号第1位为1的位进行或运算,便得到编码器输出第1位dout[1];依次类推。 在设计中,利用两个for循环实现,一个for用于对编码器输入的索引号进行计数,另一个for用于对编码器输出的索引号进行计数。同时还要判断输入二进制索引号对应位以进行相应的或运算。

猜你喜欢