【【Verilog典型电路设计之log函数的Verilog HDL设计】】

这篇具有很好参考价值的文章主要介绍了【【Verilog典型电路设计之log函数的Verilog HDL设计】】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Verilog典型电路设计之log函数的Verilog HDL设计

log函数是一种典型的单目计算函数,与其相应的还有指数函数、三角函数等。对于单目计算函数的硬件加速器设计一般两种简单方法:一种是查找表的方式;一种是使用泰勒级数展开成多项式进行近似计算。这两种方式在设计方法和精确度方面有很大的不同。查找表方式是通过存储器进行设计,设计方法简单,其精度需要通过提高存储器深度实现,在集成电路中占用面积大,因此着这种方式通常在精度要求不高的近似计算中使用。泰勒级数展开方式采用乘法器和加法器实现,可以通过增加展开级数提高计算精确度。例:用Verilog HDL设计采用查找表方式的log函数,输入信号位宽4bits,输出信号位宽8bits
【【Verilog典型电路设计之log函数的Verilog HDL设计】】,Verilog学习系列,fpga开发
其中输入数据为一位整数位三位小数位精确到2-3,输出结果两位整数位六位小数位精确到26。其Verilog HDL程序代码是:

module log_lookup(x,clk,out);
input [3:0] x;
input clk;
output [7:0] out;
reg[7:0] out;
always@(posedge clk)   begin
case(x)
4'b1000:out<=8'b00000000;
4'b1001:out<=8'b00000111;
4'b1010:out<=8'b00001110;
4'b1011:out<=8'b00010101;
4'b1100:out<=8'b00011001;
4'b1101:out<=8'b00100000;
4'b1110:out<=8'b00100100;
4'b1111:out<=8'b00101000;
default:out<=8'bz;
endcase
end  
endmodule

下面是testbench

module log_lookup_tb;
reg clk;
reg [3:0]x;
wire [7:0] out;
initial    begin
x=4'b1000;
clk=1'b0;
repeat(7)     
#10 x=x+1;
end
always  
#5 clk=~clk;
log_lookup U1(.x(x),.clk(clk),.out(out));
endmodule

例:用Verilog HDL设计采用泰勒级数展开方式的log函数,输入信号位宽4bits,输出信号位宽8bits
泰勒级数的定义:若函数f (x)在点的某一邻域内具有直到(n+1)阶导数,则在该邻域内f (x)的n阶泰勒公式为:
【【Verilog典型电路设计之log函数的Verilog HDL设计】】,Verilog学习系列,fpga开发
泰勒级数可以将一些复杂的函数用多项式相加的形式进行近似,从而简化其硬件的实现。
logax在x=b处的泰勒展开为
【【Verilog典型电路设计之log函数的Verilog HDL设计】】,Verilog学习系列,fpga开发
误差范围为:
【【Verilog典型电路设计之log函数的Verilog HDL设计】】,Verilog学习系列,fpga开发
电路结构图如图所示
【【Verilog典型电路设计之log函数的Verilog HDL设计】】,Verilog学习系列,fpga开发
上述的log函数在X=1处展开,并且要求X的取值范围为1<X<2,输入4位二进制数据X精确到2-3,其中一位整数位四位小数位,输出8位二进制数据精确到2-6,其中两位整数位六位小数位。设计当中所用到的乘法器和减法器均采用前文所给出的减法器和乘法器。

module log(x,out);
input[3:0]    x;
output[7:0]   out;
wire [3:0]   out1;
wire [7:0]   out2,out3, out5, out;
wire [3:0]     out4; 
assign out4={out3[7:4]};  
assign out1=x-4'b1000;//(x-1) 
wallace U1(.×(out1),.y(4'b0111),.out(out2));
wallace U2(.x(out1),.y(out1),.out(out3));
wallace u3(.x(out4),.y(4'b0011),.out(out5));
assign out=out2-out5;
endmodule

下面是所显示的testbench文章来源地址https://www.toymoban.com/news/detail-670577.html

module log_tb;
reg [3:0] x=4'b1000;
wire [7:0] out;
log U1(.x(x),.out(out));
always
#10x=x+1;
always@(x)begin
if(x==4'b0000)$stop;
end
endmodule

到了这里,关于【【Verilog典型电路设计之log函数的Verilog HDL设计】】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [蔡觉平老师主讲] Verilog HDL数字集成电路设计原理与应用

    硬件描述语言,Hardware Description Language (HDL)。利用HDL,可以根据电路结构的特点,采用层次化的设计结构,将抽象的逻辑功能用电路的方式进行实现。之后通过EDA(电子设计自动化)工具,可以将HDL程序综合成网表,通过自动布线工具把网表转换为具体电路布线结构,用于

    2024年04月12日
    浏览(28)
  • Verilog学习笔记(3):Verilog数字逻辑电路设计方法

    例:用Verilog设计模256(8bits)计数器 (a)可综合程序描述方式 (b)常见的错误描述方式 同时Verilog的电路描述方式具有多样性,这也决定了对于电路设计的多样性。 例:用Verilog设计数字多路选择器 (a)采用真值表形式的代码 (b)采用逻辑表达式形式的代码 (c)采用结

    2023年04月08日
    浏览(103)
  • CUMT矿大----电路与数字系统实验四 计数、译码、显示的HDL设计

    软件:Quartus II 9.0 (64-Bit)    AHDL语言 看完觉得不错的点个赞呗╰(*°▽°*)╯不要白嫖啊 分频模块(输入时钟40MHZ) 60进制计数器模块

    2024年02月11日
    浏览(160)
  • 模拟电路设计(17)---典型RC正弦波振荡器

    采用LC器件作为振荡电路的反馈网络可以达到很高的输出频率,器件比较容易实现小体积。但是要求振荡器输出几十或者几百Hz信号时,LC器件的取值会很大,很难实现实用的产品,此时采用RC选频网络就会有很大的优势。 RC、LC反馈振荡器的最大区别是振幅的稳定机理,LC振荡

    2023年04月08日
    浏览(27)
  • 基于Verilog设计的复位电路设计

    复位指的是将寄存器中的值全部置成默认值,一般复位包括同步复位和异步复位,复位可以由硬件开关控制,也可以由软件逻辑控制。复位电路复杂是因为复位本身是对大规模的硬件单元进行一种操作,必须要结合底层的设计来考虑问题。 相信大家在学习 FPGA 或者 ASIC 的时候

    2024年02月02日
    浏览(35)
  • Verilog含1个数统计电路设计

    项目要求: 待检测数据“1”由外部输入,并用LED灯显示; 待检测串行数据长度为256位,由ROM输出; 一组数据检测完毕后,指示信号DONE为1; “1”的个数由数码管显示; 设计时需给出仿真结果。 设计结果下载到FPGA上实现功能的硬件验证。 Clk_1k 频率为1kHz的时钟信号,上升沿

    2024年02月08日
    浏览(29)
  • 时序电路的Verilog设计——基本时序元件

    目录 一、Verilog语法 1.1 时钟边缘检测函数 1.2 边缘触发型时序模块的verilog设计规律

    2024年02月22日
    浏览(45)
  • 从零学verilog系列(4)组合逻辑电路设计方法

      目录 1.组合电路设计方法 1.1真值表方式(本质是最小项表达式) 1.2逻辑表达式方式 1.3结构描述方式 1.4抽象描述方式(从电路功能出发) 2组合电路设计项目 2.1数字加法器 半加器(1位加法器) 全加器 串行进位加法器(行波进位加法器) 超前进位加法器 2.2数据比较器 2.3数据选

    2024年02月04日
    浏览(32)
  • 数字电路EDA综合设计verilog笔记(持续更新)

    目录 1、常用组合电路模块的设计 1、基本门电路(常用3种描述方法) 2、译码器与编码器 (1)译码器(decoder) (2)编码器(encoder) 2、常用时序电路模块的设计 1、D触发器 2、数据锁存器 3、实用电路设计 1、基本门电路 2、译码器与编码器 3、数据选择器 4、奇偶校验产生器

    2024年02月09日
    浏览(34)
  • 时钟分频电路设计--verilog(2分频、3分频、4分频)

    module divider( input clk, input resetn, output reg clk_d2, output reg clk_d3_pos, output reg clk_d3_neg, output clk_d3, //reg型不能assign赋值? output reg clk_d4 ); reg [1:0]counter; reg [1:0]counter_3; always@(posedge clk or negedge resetn)begin //4分频计数器模块 if(~resetn) counter = 2’b0; else if(counter = 2’b11) counter = counter + 1’

    2024年02月06日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包