FPGA基础代码复用
一、verilog中有关代码复用的语法
1、连接符“{}”
{4{1'b1}} 或者 {5'd6, 5'd8}
2、参数(Parameter)型常量定义
parameter 参数名=表达式; 或者 localparam 参数名=表达式;
parameter DATA_WIDTH = 20;
3、function函数定义
函数内部语句只能写组合逻辑。
function [7:0] adder;
input [6:0] a;
input [6:0] b;
beginadder = a + b;
end
endfunction
4、for语句
for(表达式1;表达式2;表达式3) 语句
genvar i;
for(i=0; i<10; i=i+1)
5、generate-for语句
(1) 必须使用genvar定义一个正整数变量;
(2) for里面的内嵌语句,必须写在begin_end里面;
(3) begin_end需要定义名字。
genvar i;generate for(i=0; i<10; i=i+1)begin语句;end
endgenerate
二、代码复用示例
1、使用函数定义
module test(input wire [6:0] a,input wire [6:0] b,input wire [6:0] c,input wire [6:0] d,output reg [7:0] ab,output reg [7:0] bc,output reg [7:0] cd;
);function [7:0] caler;
input [6:0] a;
input [6:0] b;
beginadder = {a, 1'b0} + b;
end
endfunction always(posedge clk) beginif(reset) begin{ab,bc,cd} <= 'b0;end else beginab <= caler(a,b);bc<= caler(b,c);cd <= caler(c,d);end
endendmodule
2、使用generate示例
(1)语句复用
parameter DATA_WIDTH = 7;reg [DATA_WIDTH*10-1:0] a;reg [DATA_WIDTH*10-1:0] b;reg [DATA_WIDTH*10-1:0] c;genvar i;generate for(i=0; i<10; i=i+1)beginalways(posedge clk) beginif(reset) beginc[(i+1)*DATA_WIDTH-1:i*DATA_WIDTH] <= 'b0;end else beginc[(i+1)*DATA_WIDTH-1:i*DATA_WIDTH] <= a[(i+1)*DATA_WIDTH-1:i*DATA_WIDTH] + b[(i+1)*DATA_WIDTH-1:i*DATA_WIDTH];endendend
endgenerate
(2)模块复用
parameter IN_WIDTH = 7;parameter OUT_WIDTH = 8;reg [IN_WIDTH*10-1:0] a;reg [IN_WIDTH*10-1:0] b;reg [IN_WIDTH*10-1:0] c;reg [IN_WIDTH*10-1:0] d;wire [OUT_WIDTH *10-1:0] ab;wire [OUT_WIDTH *10-1:0] bc;wire [OUT_WIDTH *10-1:0] cd;genvar i;generate for(i=0; i<10; i=i+1)begintest(.clk(clk),.reset(reset),.a(a[(i+1)*IN_WIDTH-1:i*IN_WIDTH]),.b(b[(i+1)*IN_WIDTH-1:i*IN_WIDTH]),.c(c[(i+1)*IN_WIDTH-1:i*IN_WIDTH]),.d(d[(i+1)*IN_WIDTH-1:i*IN_WIDTH]),.ab(ab[(i+1)*OUT_WIDTH-1:i*OUT_WIDTH]),.bc(bc[(i+1)*OUT_WIDTH-1:i*OUT_WIDTH]),.cd(cd[(i+1)*OUT_WIDTH-1:i*OUT_WIDTH]));end
endgenerate
总的来说,使用generate确实对代码的整体结构,以及调试提供了很大的方便,各位可以在编写代码的过程中多多使用。
相关文章:
FPGA基础代码复用
一、verilog中有关代码复用的语法 1、连接符“{}” {4{1b1}} 或者 {5d6, 5d8} 2、参数(Parameter)型常量定义 parameter 参数名=表达式; 或者 localparam 参数名=表达式; parameter DATA_WIDTH 20; 3、function函数定义 …...
Hbase简介
HBase简介 一、HBase简介 1. HBase简介 (1) apache的顶级项目,hadoop的数据库,分布式、大规模的大数据存储。 HBase是Google的BigTable的开源java版本,建立在hdfs之上的,分布式、列存储、非关系(nosql、key-value&a…...
科海思除COD树脂,大孔树脂,除COD专用树脂
一、产品介绍 Tulsimer A-722 MP具有控制孔径的大孔强碱性Ⅰ型阴离子交换树脂 Tulsimer A-722 MP 是一款具有便于颜色和有机物去除的控制孔径的,专门开发的大孔强碱性Ⅰ型阴离子交换树脂。 Tulsimer A-722 MP(氯型)专门应用于去除COD…...
Qt 多线程 QThread、QThreadPool使用场景
QThread 和 QRunnable 都是 Qt 框架中用于多线程编程的类,它们之间有以下不同点: 继承关系不同 QThread 继承自 QObject 类,而 QRunnable 没有父类。 实现方式不同 QThread 是一个完整的线程实现,包含了线程的创建、启动、停止、…...
如何一招搞定PCB阻焊过孔问题?
PCB阻焊油墨根据固化方式,阻焊油墨有感光显影型的油墨,有热固化的热固油墨,还有UV光固化的UV油墨。而根据板材分类,又有PCB硬板阻焊油墨,FPC软板阻焊油墨,还有铝基板阻焊油墨,铝基板油墨也可以用…...
【代码随想录】刷题Day2
1.左右指针比大小 977. 有序数组的平方 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vector<int> ret nums;int left 0;int right nums.size()-1;int end nums.size();while(left<right){if(abs(nums[left])>abs…...
Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用
Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…...
计及调度经济性的光热电站储热容量配置方法【IEEE30节点】(Matlab代码实现)
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥 🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 …...
“不要放过这个春天”解锁品牌春日宣传新玩法
在万物复苏的春天,人们换新装、踏青等需求蓄势待发,出现了全民消费热情高涨的趋势,让品牌「贩卖春天」的宣传此起彼伏。 品牌洞察到用户的消费需求,打造具有品牌特色的浪漫宣传,如采用春日限定元素、创新春天宣传场景…...
利用GPT2 预测 福彩3d预测
使用GPT2预测福彩3D项目 个人总结彩票数据是随机的,可以预测到1-2个数字,但是有一两位总是随机的 该项目紧做模型学习用,通过该项目熟练模型训练调用生成过程. 福彩3D数据下载 https://www.17500.cn/getData/3d.TXT data数据格式 处理后数据格式 每行 2023 03 08 9 7 3 训…...
类加载过程
基本说明 反射机制是Java实现动态语言的关键,也就是通过反射实现类动态加载。 静态加载:编译时加载相关的类,如果没有则报错,依赖性太强动态加载:运行时加载需要的类,如果运行时不用该类,即使…...
【C/C++】C++11 无序关联容器的诞生背景
文章目录 背景无序关联容器适用场景有序关联容器适用场景 背景 C11 引入了无序关联容器(unordered_map、unordered_set、unordered_multimap 和 unordered_multiset)是为了提供一种高效的元素存储和查找方式。相比于有序关联容器(map、set、…...
h264编码原理
在介绍编码器原理之前首先了解三个制定编码标准的组织: 1.国际电信联盟(ITU-T),这是一个音视频领域非常强的组织,规定了很多标准如h261,h262,h263,h263。h263也就是h264的前身。 2.国际标准化组织(ISO)&…...
网络工程师经常搞混的路由策略和策略路由,两者到底有啥区别?
当涉及到网络路由时,两个术语经常被混淆:策略路由和路由策略。虽然这些术语听起来很相似,但它们实际上有着不同的含义和用途。在本文中,我们将详细介绍这两个术语的区别和应用。 一、路由策略 路由策略是指一组规则,用…...
高精度气象模拟软件WRF实践技术
【原文链接】:高精度气象模拟软件WRF(Weather Research Forecasting)实践技术及案例应用https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247538149&idx3&sn3890c3b29f34bcb07678a9dd4b9947b2&chksmfe68938fc91f1a99bbced2113b09cad822711e7f…...
总结827
学习目标: 4月(复习完高数18讲内容,背诵21篇短文,熟词僻义300词基础词) 学习内容: 高等数学:刷1800,做了26道计算题,记录两道错题,搞懂了,但并不…...
还在发愁项目去哪找?软件测试企业级Web自动化测试实战项目
今天给大家分享一个简单易操作的实战项目(已开源) 项目名称 ET开源商场系统 项目描述 ETshop是一个电子商务B2C电商平台系统,功能强大,安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城…...
总结下Spring boot异步执行逻辑的几种方式
文章目录 概念实现方式Thread说明 Async注解说明 线程池CompletableFuture(Future及FutureTask)创建CompletableFuture异步执行 消息队列 概念 异步执行模式:是指语句在异步执行模式下,各语句执行结束的顺序与语句执行开始的顺序…...
【开发日志】2023.04 ZENO----Composite----CompNormalMap
NormalMap-Online (cpetry.github.io)https://cpetry.github.io/NormalMap-Online/ CompNormalMap 将灰度图像转换为法线贴图 将灰度图像转换为法线贴图是一种常见的技术,用于在实时图形渲染中增加表面细节。下面是一个简单的方法来将灰度图像转换为法线贴图&…...
春秋云境:CVE-2022-28525 (文件上传漏洞)
目录 一、题目 1.登录 2.burp抓包改包 3.蚁剑获取flag 一、题目 ED01CMSv20180505存在任意文件上传漏洞 英语不够 翻译来凑: 点击其他页面会Not Found 找不到: 先登录看看吧: 试试万能密码:admin:123 发现错误…...
视频换脸功能上线!AI黑科技助力内容创作降本90%
在电商圈摸爬滚打十几年,从国内淘宝京东到亚马逊TikTok,操盘过美妆、服饰、3C多个类目的百万级店铺。这十年最深的体会就是:流量越来越贵,内容越来越卷,成本越来越高。 尤其是短视频赛道。一条带货视频,模…...
解锁3大技术场景:PptxGenJS自动化演示文稿实战指南
解锁3大技术场景:PptxGenJS自动化演示文稿实战指南 【免费下载链接】PptxGenJS Create PowerPoint presentations with a powerful, concise JavaScript API. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS 在数字化办公与开发领域,演示…...
突破本地开发壁垒:tunnelto无缝连接全球网络的技术革新
突破本地开发壁垒:tunnelto无缝连接全球网络的技术革新 【免费下载链接】tunnelto Expose your local web server to the internet with a public URL. 项目地址: https://gitcode.com/GitHub_Trending/tu/tunnelto 痛点诊断:当本地服务成为协作孤…...
Speech Seaco Paraformer问题解决:识别不准?试试热词功能提升准确率
Speech Seaco Paraformer问题解决:识别不准?试试热词功能提升准确率 1. 语音识别不准的常见困扰 语音识别技术在日常工作和生活中应用越来越广泛,但很多用户在使用过程中都会遇到一个共同问题:识别结果不准确。特别是当录音内容…...
为什么你的视觉检测准确率卡在92.7%?(揭秘工业现场3类未标注异常数据导致的模型过拟合代码根源)
第一章:视觉检测准确率瓶颈的工业现场真相在实际产线部署中,视觉检测模型在实验室达到99.2%的mAP,落地后却频繁出现漏检与误报——这不是算法缺陷,而是工业现场多维干扰叠加的真实映射。光照波动、工件表面反光、传送带抖动、镜头…...
Z-Image-GGUF完整教程:阿里通义文生图模型从安装到出图
Z-Image-GGUF完整教程:阿里通义文生图模型从安装到出图 你是不是也想过,要是能用几句话就让电脑画出你想象中的画面,那该多酷?比如,你想看“樱花树下的古寺,夕阳西下,电影感十足”,…...
技术探索:硬件信息伪装的内核级实现方案
技术探索:硬件信息伪装的内核级实现方案 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 如何通过驱动级操作实现系统硬件标识的深度修改? 技术解析&#x…...
终极指南:如何用Fara-7B实现智能电脑自动操作
终极指南:如何用Fara-7B实现智能电脑自动操作 【免费下载链接】fara Fara-7B: An Efficient Agentic Model for Computer Use 项目地址: https://gitcode.com/gh_mirrors/fara/fara Fara-7B是微软推出的首个专门为电脑自动操作设计的7B参数智能代理模型&…...
OpenClaw成本优化:Qwen3.5-9B自部署接口降低token消耗实践
OpenClaw成本优化:Qwen3.5-9B自部署接口降低token消耗实践 1. 为什么需要关注OpenClaw的token消耗? 去年夏天,当我第一次用OpenClaw自动化处理月度报表时,收到了令人咋舌的账单——短短一周的自动化操作消耗了价值近200美元的AP…...
三步搞定QQ空间历史说说备份:GetQzonehistory完整使用指南
三步搞定QQ空间历史说说备份:GetQzonehistory完整使用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在担心QQ空间的珍贵回忆会丢失吗?GetQzonehistory是…...
