HDL代码风格建议(2)乘法器和DSP推断
Inferring Multipliers and DSP Functions
Inferring Multipliers
module unsigned_mult (out, a, b);
output [:] out;
input [:] a;
input [:] b;
assign out = a * b;
endmodule
Verilog HDL Usigned Multiplier
Note: The signed declaration in Verilog HDL is a feature of the Verilog 2001 Standard.
module signed_mult (out, clk, a, b);
output [:] out;
input clk;
input signed [:] a;
input signed [:] b;
reg signed [:] a_reg;
reg signed [:] b_reg;
reg signed [:] out;
wire signed [:] mult_out;
assign mult_out = a_reg * b_reg;
always @ (posedge clk)
begin
a_reg <= a;
b_reg <= b;
out <= mult_out;
end
endmodule
Verilog HDL Signed Multiplier with Input and Output Regist
Inferring Multiply‑Accumulator and Multiply-Adder
The Verilog HDL and VHDL code samples infer multiply-accumulators and multiply-adders with input, output, and pipeline registers, as well as an optional asynchronous clear signal. Using the three sets of registers provides the best performance through the function, with a latency of three. You can remove the registers in your design to reduce the latency.
module unsig_altmult_accum (dataout, dataa, datab, clk, aclr, clken);
input [:] dataa, datab;
input clk, aclr, clken;
output reg[:] dataout;
reg [:] dataa_reg, datab_reg;
reg [:] multa_reg;
wire [:] multa;
wire [:] adder_out;
assign multa = dataa_reg * datab_reg;
assign adder_out = multa_reg + dataout;
always @ (posedge clk or posedge aclr)
begin
if (aclr)
begin
dataa_reg <= 'b0;
datab_reg <= 'b0;
multa_reg <= 'b0;
dataout <= 'b0;
end
else if (clken)
begin
dataa_reg <= dataa;
datab_reg <= datab;
multa_reg <= multa;
dataout <= adder_out;
end
end
endmodule
Verilog HDL Unsigned Multiply-Accumulator
module sig_altmult_add (dataa, datab, datac, datad, clock, aclr, result);
input signed [:] dataa, datab, datac, datad;
input clock, aclr;
output reg signed [:] result;
reg signed [:] dataa_reg, datab_reg, datac_reg, datad_reg;
reg signed [:] mult0_result, mult1_result;
always @ (posedge clock or posedge aclr) begin
if (aclr) begin
dataa_reg <= 'b0;
datab_reg <= 'b0;
datac_reg <= 'b0;
datad_reg <= 'b0;
mult0_result <= 'b0;
mult1_result <= 'b0;
result <= 'b0;
end
else begin
dataa_reg <= dataa;
datab_reg <= datab;
datac_reg <= datac;
datad_reg <= datad;
mult0_result <= dataa_reg * datab_reg;
mult1_result <= datac_reg * datad_reg;
result <= mult0_result + mult1_result;
end
end
endmodule
Verilog HDL Signed Multiply-Adder
HDL代码风格建议(2)乘法器和DSP推断的更多相关文章
- HDL代码风格建议(1)使用示例和IP
Recommended HDL Coding Styles HDL coding styles can have a significant effect on the quality of resu ...
- 浅谈Verilog HDL代码编写风格
消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次 ...
- AngularJS之代码风格36条建议【一】(九)
前言 其实在新学一门知识时,我们应该注意下怎么书写代码更加规范,从开始就注意养成一个良好的习惯无论是对于bug的查找还是走人后别人熟悉代码都是非常好的,利人利己的事情何乐而不为呢,关于AngularJ ...
- Python 代码风格
1 原则 在开始讨论Python社区所采用的具体标准或是由其他人推荐的建议之前,考虑一些总体原则非常重要. 请记住可读性标准的目标是提升可读性.这些规则存在的目的就是为了帮助人读写代码,而不是相反. ...
- python代码风格-PEP8
转载自http://www.douban.com/note/134971609/ Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下 ...
- ZZC语言代码风格
程序员之路--关于代码风格 优秀的代码风格如同一身得体的打扮,能够给人以良好的印象.初学程序设计,首先必须建立良好的编程习惯,这其中就包括代码风格.本文就代码风格中的几个重点问题进行了讨论,并在文后给 ...
- [转] Linux内核代码风格 CodingStyle [CH]
from:http://blog.csdn.net/jiang_dlut/article/details/8163731 中文版维护者: 张乐 Zhang Le <r0bertz@gentoo. ...
- python代码风格指南:pep8 中文翻译
摘要 本文给出主Python版本标准库的编码约定.CPython的C代码风格参见PEP7.本文和PEP 257 文档字符串标准改编自Guido最初的<Python Style Guide&g ...
- 【转】python代码风格-PEP8
转载自http://www.douban.com/note/134971609/ Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下 ...
随机推荐
- July 09th 2017 Week 28th Sunday
He that boasts of his own knowledge proclaims ignorance. 夸耀知识实乃无知. Honestly speaking, I don't agree ...
- 《SQL必知必会》总结
目录 第1章 了解SQL 第2章 检索数据 第3章 排序检索数据 第4章 过滤数据 第5章 高级数据过滤 第6章 用通配符进行过滤 第7章 创建计算字段 第8章 使用数据处理函数 第9章 汇总数据 ...
- 为什么S/4HANA的生产订单创建后会自动release
在S/4HANA系统里我们观察到通过函数CO_61_ORDER_EDIT创建的生产订单会自动释放Release: 通过第86行的IF语句的条件检测不难找到原因. 变量PROFILE_TMP的类型为TC ...
- @autoclosure-可以让表达式自动封装成一个闭包:输入的是一个表达式
@autoclosure 在闭包前面加上@autoclosure func or(first:Bool,@autoclosure second:()->Bool) -> Bool { if ...
- BZOJ5293:[BJOI2018]求和(LCA,差分)
Description master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的k 次方和,而且每次的k 可能是不同的.此处节点深度的定义是这个节点 ...
- vim命令set nu
set nu:为vim设置行号 set nonu:取消vim中的行号
- 利用arduino给PCB800099液晶驱动板烧录程序
某宝上购买了一块PCB800099液晶驱动板, 卖家出货的时候刷的驱动不对,遂需要重新烧录程序 可是苦于没有编程器,寻遍网络后找到几种解决方案: arduino刷,树莓派I2C口刷,linux下用vg ...
- sharepoint2016安装OOS,OOS场负载均衡
Office Online Server is the successor to Office Web Apps Server. It may be connected to SharePoint, ...
- sql server 中判断分组排序的使用示例
现在需要查询一组数据,是对一列字段(column01)的数据分范围查询后分组排序: select (case when [column01] >0 AND [column01]<= 500 ...
- 阿里云修改主机名(以centOS为例)
需要更改配置文件生效,修/etc/sysconfig/network里的 HOSTNAME=主机名(可自定义),重启生效. 如何修改? 1.[root@aliyunbaike ~]# cd /etc/ ...