文档详情

Verilog HDL高级程序设计举例 .ppt

发布:2024-11-09约3.36万字共249页下载文档
文本预览下载声明

16h0004:pressed=key_2;

16h0008:pressed=key_3;

16h0010:pressed=key_4;

16h0020:pressed=key_5;

16h0040:pressed=key_6;

16h0080:pressed=key_7;

16h0100:pressed=key_8;

16h0200:pressed=key_9;

16h0400:pressed=key_A;

16h0800:pressed=key_B;

16h1000:pressed=key_C;

16h2000:pressed=key_D;

16h4000:pressed=key_E;

16h8000:pressed=key_F;

default:pressed=None;

endcase

end

initial#2000$stop;

initialbeginclock=0;

forever#5clock=~clock;

end

initialbeginreset=1;

#10reset=0;end

initialbeginfor(k=0;k=1;k=k+1)

beginkey=0;

#20for(j=0;j=16;j=j+1)

begin

#20key[j]=1;

#60key=0;

end

endend

endmodule

测试结果如图6.2-21所示。图6.2-21十六进制键盘电路的键盘扫描和编码器的测试结果6.2.8log函数的VerilogHDL设计

ASIC和FPGA的一个重要功能是实现计算函数加速器,随着通信、自动控制和多媒体信号处理计算量的增大,采用VerilogHDL设计计算函数加速器越来越重要。6.2.8节和6.2.9节将分别对两种典型的计算函数加速器进行设计。通过这些例子,可了解一些初步的设计方法。

log函数是一种典型的单目计算函数,与其相应的还有指数函数、三角函数等。对于单目计算函数的硬件加速器的设计,一般有两种简单的方法:一种是查找表的方式;一种是使用泰勒级数展开成多项式进行近似计算。这两种方式在设计方法和精确度方面有很大的不同。查找表方式是通过存储器进行设计,设计方法简单,其精度需要通过提高存储器的深度来实现,在集成电路中占用面积大,因此这种方式通常在精度要求不高的近似计算中使用。泰勒级数展开方式采用乘法器和加法器来实现,可以通过增加展开级数来提高计算的精确度。

例6.2-11用VerilogHDL设计采用查找表方式的log函数,输入信号位宽为4bit,输出信号位宽为8bit。单目计算函数的特点是,只有一个输入信号和一个输出信号,在结构上与存储器工作原理相似。实现函数操作,是将函数中的计算结果存入存储器中,将输入信号(操作数)作为地址访问存储器,那么存储器输出的结果就是函数的运算结果。由于从存储器中读取数据要比复杂计算的速度快得多,所以通常采用查找表结构,这可以在很大程度上提高运算速度。查找表的方法一般适用于位数比较低的情况,如果位数较高则会占用大量的内存。表6.2-2是输入4bit、输出8bit信号的log函数计算表。表6.2-2log函数计算表其中,输入数据为1位整数位与3位小数位,精确到2-3;输出结果为2位整数位和6位小数位,精确到2-6。其VerilogHDL程序代码如下:

modulelog_lookup(x,clk,out);

input[3:0]x;

inputclk;

output[7:0]out;

reg[7:0]out;

alway

显示全部
相似文档