Verilog中parameter使用
- 概述
- 模块定义
- 模块调用
- Questasim仿真
1.概述
Verilog中通过使用parameter可以在调用模块时修改模块里面的常数参数,提高模块的复用性,类似C语言中函数的形参,在模块调用时将参数传入模块。
2.模块定义
以简单的2选一电路为例,通过parameter配置输入参数的位宽进行说明:
2.1模块内定义
通过parameter配置输入位宽,默认为2bit:
module Mux2_1(in1,in2,sel,out);
parameter WIDTH=2;
input[WIDTH:1] in1;
input[WIDTH:1] in2;
input sel;
output[WIDTH:1] out;assign out=sel?in1:in2;
endmodule
2.2模块外定义
module Mux2_1
#(parameter WIDTH=2)
(in1,in2,sel,out);
//parameter WIDTH=2;
input[WIDTH:1] in1;
input[WIDTH:1] in2;
input sel;
output[WIDTH:1] out;assign out=sel?in1:in2;
endmodule
3.模块调用
3.1顶层模块调用修改参数
module ParaDemo(in1,in2,sel,out);
parameter WIDTH=4;
input[WIDTH:1] in1;
input[WIDTH:1] in2;
input sel;
output [WIDTH:1] out;
Mux2_1 #(WIDTH) mux2_1(.in1(in1),.in2(in2),.sel(sel),.out(out));
endmodule
在Quartus中综合后的RTL视图:
3.2 defparam修改参数后调用
module Ex(normal,fuse,sel,out);input[4:1] normal;input[4:1] fuse;input sel;output[4:1] out;defparam mux2_1.WIDTH=4;Mux2_1 mux2_1(.in1(fuse),.in2(normal),.sel(sel),.out(out));
endmodule
RTL视图:
3.Questasim仿真
testbench文件:
`timescale 1ns/100ps
module Top_tb(output[4:1] out);
reg[4:1] in1;
reg[4:1] in2;
reg sel;task init;
input reg[4:1] v1;
input reg[4:1] v2;
input reg s;
beginin1=v1;in2=v2;sel=s;
end
endtaskinitial
begin#5;init(0,8,0);#5;init(1,4,0);#5;init(2,2,0);#5;init(4,1,0);#5;init(8,0,0);#5;init(0,8,1);#5;init(1,4,1);#5;init(2,2,1);#5;init(4,1,1);#5;init(8,0,1);
endEx ex(.fuse(in1),.normal(in2),.sel(sel),.out(out));endmodule
仿真波形:
Verilog中parameter使用相关推荐
- Verilog中`define和parameter有什么区别
Verilog中使用`define和parameter有什么区别? `define和parameter都可以在设计中用来指定常量. 例如: 以下是使用`define和parameter的一些区别: 什 ...
- Verilog中的parameter
1. 概述 在Verilog中我们常常会遇到要将一个常量(算法中的某个参数)赋给很多个变量的情况,如: x = 10; y = 10; z = 10; 如果此时10要改为9,就需要在代码中修改3个地方 ...
- verilog中define、parameter、localparam的区别
Verilog代码可移植性设计 1. 参数定义 localparam,实例代码如下: module tm1( clk,rst_n, pout ); input clk; input rst ...
- 浅谈verilog hdl中parameter的用法
浅谈verilog hdl中parameter的用法 parameter 1.parameter参数使用 事例1: 事例2: 事例3 事例4 2.defparam使用 事例5 3.parameter与 ...
- Verilog语法中parameter与localparam
Verilog语法中parameter与localparam 对读者的假设 已经掌握: .可编程逻辑基础 .Verilog HDL基础 .使用Verilog设计的Quartus II入门指南 .使用V ...
- Verilog初级教程(12)Verilog中的generate块
文章目录 前言 正文 generate for generate if generate case 参考资料 本系列博文 前言 verilog中的generate块可以称为生成块,所谓生成,可以理解为 ...
- FPGA之道(37)Verilog中的编写注意事项
文章目录 前言 Verilog中的编写注意事项 大小写敏感 Verilog中的关键字 范围定义的正确使用 不要省略begin与end 注释中斜杠的方向 编译指令中的前导符号 混用阻塞和非阻塞赋值的危害 ...
- FPGA之道(36)Verilog中的编译指令
文章目录 前言 Verilog中的编译指令 define指令 timescale指令 inlcude指令 前言 本文摘自<FPGA之道>,一起来了解下Verilog中的编译指令. Veri ...
- FPGA之道(35)Verilog中的并行与串行语句
文章目录 前言 Verilog的并行语句 Verilog连续赋值语句 普通连续赋值语句 条件连续赋值语句 Verilog程序块语句 沿事件 纯组合always 纯时序always 具有同步复位的alw ...
最新文章
- 1.5 RandomAccessFile类:动态读取文件内容
- 【干货】引爆公式,让你的APP成为下一个“爆款”!
- 计算机一级考试试题window,全国计算机等级考试一级Window复习题及答案.doc
- python encode gbk_[转]Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
- PHP中删除目录的三种方法
- pcl_openmap_OpenMap教程第2部分–使用MapHandler构建基本地图应用程序–第1部分
- php周边,PHP周边 – 第6页 – Joyous—快乐由此开始
- window.showModalDialog模态对话框 值回传 TreeView无刷新
- 校内网脱胎“人人”能成大器
- 附pdf下载 | 《机器学习数学基础》电子书
- C++11的模板类型判断——std::is_same和std::decay
- 老照片修复清晰?父母以前的老照片还能修复吗?
- dpdk中文-dpdk简单介绍
- 搭建一个完整的实时日志统计平台
- 什么是云效,云原生时代一站式DevOps平台
- 安全研究 # 课题:二进制成分分析(Binary SCA)
- 七麦js破解(最新)
- 纪中暑假培训: Date 3:电视游戏问题
- 小区综合业务系统/小区管理系统
- 读书笔记(四)--PBFT
热门文章
- 2020年中国高粱行业发展现状分析,产品多元化发展「图」
- 【java毕业设计】基于javaEE+原生Servlet+MySql的企业财务管理系统设计与实现(毕业论文+程序源码)——企业财务管理系统
- android系统手机流量控制方法,如何实现Android手机流量的控制
- 基于PHP网上考试系统,试卷、试题——基于php网上考试系统.doc
- GOM登录器配置免费版生成图文教程
- 系列文章深度解读|SwiftUI 背后那些事儿
- Task 2: Word Vectors and Word Senses (附代码)(Stanford CS224N NLP with Deep Learning Winter 2019)
- 【Scratch考级99图】图20-等级考试scratch绘制复杂图形5个正方形 少儿编程 scratch画图案例教学
- 一次基于u2-net的人物肖像画的实践
- ❤️❤️❤️Unity废柴看过来,手把手教你做植物大战僵尸(二)—— 序列帧动画