• 概述
  • 模块定义
  • 模块调用
  • 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使用相关推荐

  1. Verilog中`define和parameter有什么区别

    Verilog中使用`define和parameter有什么区别? `define和parameter都可以在设计中用来指定常量. 例如: 以下是使用`define和parameter的一些区别: 什 ...

  2. Verilog中的parameter

    1. 概述 在Verilog中我们常常会遇到要将一个常量(算法中的某个参数)赋给很多个变量的情况,如: x = 10; y = 10; z = 10; 如果此时10要改为9,就需要在代码中修改3个地方 ...

  3. verilog中define、parameter、localparam的区别

    Verilog代码可移植性设计 1.       参数定义 localparam,实例代码如下: module tm1( clk,rst_n, pout ); input clk; input rst ...

  4. 浅谈verilog hdl中parameter的用法

    浅谈verilog hdl中parameter的用法 parameter 1.parameter参数使用 事例1: 事例2: 事例3 事例4 2.defparam使用 事例5 3.parameter与 ...

  5. Verilog语法中parameter与localparam

    Verilog语法中parameter与localparam 对读者的假设 已经掌握: .可编程逻辑基础 .Verilog HDL基础 .使用Verilog设计的Quartus II入门指南 .使用V ...

  6. Verilog初级教程(12)Verilog中的generate块

    文章目录 前言 正文 generate for generate if generate case 参考资料 本系列博文 前言 verilog中的generate块可以称为生成块,所谓生成,可以理解为 ...

  7. FPGA之道(37)Verilog中的编写注意事项

    文章目录 前言 Verilog中的编写注意事项 大小写敏感 Verilog中的关键字 范围定义的正确使用 不要省略begin与end 注释中斜杠的方向 编译指令中的前导符号 混用阻塞和非阻塞赋值的危害 ...

  8. FPGA之道(36)Verilog中的编译指令

    文章目录 前言 Verilog中的编译指令 define指令 timescale指令 inlcude指令 前言 本文摘自<FPGA之道>,一起来了解下Verilog中的编译指令. Veri ...

  9. FPGA之道(35)Verilog中的并行与串行语句

    文章目录 前言 Verilog的并行语句 Verilog连续赋值语句 普通连续赋值语句 条件连续赋值语句 Verilog程序块语句 沿事件 纯组合always 纯时序always 具有同步复位的alw ...

最新文章

  1. 1.5 RandomAccessFile类:动态读取文件内容
  2. 【干货】引爆公式,让你的APP成为下一个“爆款”!
  3. 计算机一级考试试题window,全国计算机等级考试一级Window复习题及答案.doc
  4. python encode gbk_[转]Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
  5. PHP中删除目录的三种方法
  6. pcl_openmap_OpenMap教程第2部分–使用MapHandler构建基本地图应用程序–第1部分
  7. php周边,PHP周边 – 第6页 – Joyous—快乐由此开始
  8. window.showModalDialog模态对话框 值回传 TreeView无刷新
  9. 校内网脱胎“人人”能成大器
  10. 附pdf下载 | 《机器学习数学基础》电子书
  11. C++11的模板类型判断——std::is_same和std::decay
  12. 老照片修复清晰?父母以前的老照片还能修复吗?
  13. dpdk中文-dpdk简单介绍
  14. 搭建一个完整的实时日志统计平台
  15. 什么是云效,云原生时代一站式DevOps平台
  16. 安全研究 # 课题:二进制成分分析(Binary SCA)
  17. 七麦js破解(最新)
  18. 纪中暑假培训: Date 3:电视游戏问题
  19. 小区综合业务系统/小区管理系统
  20. 读书笔记(四)--PBFT

热门文章

  1. 2020年中国高粱行业发展现状分析,产品多元化发展「图」
  2. 【java毕业设计】基于javaEE+原生Servlet+MySql的企业财务管理系统设计与实现(毕业论文+程序源码)——企业财务管理系统
  3. android系统手机流量控制方法,如何实现Android手机流量的控制
  4. 基于PHP网上考试系统,试卷、试题——基于php网上考试系统.doc
  5. GOM登录器配置免费版生成图文教程
  6. 系列文章深度解读|SwiftUI 背后那些事儿
  7. Task 2: Word Vectors and Word Senses (附代码)(Stanford CS224N NLP with Deep Learning Winter 2019)
  8. 【Scratch考级99图】图20-等级考试scratch绘制复杂图形5个正方形 少儿编程 scratch画图案例教学
  9. 一次基于u2-net的人物肖像画的实践
  10. ❤️❤️❤️Unity废柴看过来,手把手教你做植物大战僵尸(二)—— 序列帧动画