IC学习笔记14——Parameter的使用

一、parameter 声明常量

parameter定义常量,可以在模块内部或外部;常用于定义位宽或时间延迟(一些易变的量)
定义方式为:parameter 标识符 = (位宽) 常数;//位宽默认为32位,如果指定位宽则以指定值为准

1.1 parameter 在模块内部定义常量

          module    param_interior(
                                                  input                   clk,
                                                  input                   rst_n,
                                                  input          [2:0]    din,
                                                  output    reg  [3:0]    sum
                                                  );
           parameter      add=2'd1;
           always@(posedge clk or negedge rst_n)
           begin
	               if(rst_n==1'b'0)
	                   begin
	                         sum<=4'd0;
	                   end
	               else
	                   begin
	                         sum<=din+add;
	                   end
	      end
          endmodule

1.2 parameter 在模块外部定义常量

          module param_exterior
                       #( parameter      add=2'd1)              
                                     (
                                                  input                   clk,
                                                  input                   rst_n,
                                                  input          [2:0]    din,
                                                  output    reg  [3:0]    sum
                                      );
           always@(posedge clk or negedge rst_n)
           if(rst_n==1'b'0)
           begin
                   begin
                         sum<=4'd0;
                   end
               else
                   begin
                         sum<=din+add;
                   end
          end
          endmodule

1.3 使用parameter定义常量的好处

1.3.1 可维护性

通过改变parameter定义的常量值,实现代码所有用到这一标志符的值,便于修改与维护。

1.3.2 可读性

标志符按照常量实际意义取名,增强可读性

二、参数传递

子模块利用parameter定义常量,被顶层调用时默认子模块中的参数
module Decode(A,F);//这是一个子模块
parameter Width=1,Polarity=1;

endmodule

2.1 模块调用修改参数

参数改变时,可在顶层模块调用子模块时进行参数修改;
如:
module Top(…); //这是一个顶层模块
Decode #(4,0) U1(); //使得Width=4,Polarity=0;
Decode #(5)U2(); //使得Width=5,Polarity不变,即为1
endmodule

2.2 利用defparam修改参数

参数修改时,也可以利用defparam进行参数修改;
如:
module Top(…); //这是一个顶层模块
defparam U1.Width=4;
defparam U1.Polarity=0;//使得Width=4,Polarity=0;

defparam U2.Width=5;//使得Width=5,Polarity不变,即为1
Decode U1();
Decode U2();
endmodule

三、参考文献

Verilog中Parameter用法-常量定义与参数传递(例化传递、defparam传递)

cda备考学习学习笔记——基础知识篇(二)主要涉及了计算机科学与技术领域的基本概念和知识。 首先,它介绍了计算机网络的基础知识。网络是将多台计算机通过通信链路连接起来,使它们能够相互通信和共享资源的系统。笔记中详细介绍了网络的组成、拓扑结构和通信协议等重要内容。 其次,笔记还解释了计算机系统的基本组成。计算机系统由硬件和软件两部分组成,其中硬件包括中央处理器、存储器、输入输出设备等,而软件则分为系统软件和应用软件。笔记详细介绍了各种硬件和软件的功能和作用。 此外,笔记还对数据库管理系统进行了介绍。数据库管理系统是一种用于管理和组织数据的软件系统,它能够实现数据的存储、检索和更新等操作。笔记中详细介绍了数据库的概念、结构和操作等内容。 最后,笔记还包括了算法和数据结构的基础知识。算法是解决问题的一系列步骤和规则,而数据结构则是组织和存储数据的方式。笔记中介绍了常用的算法和数据结构,如排序算法、树和图等。 总之,通过学习CDA备考学习笔记中的基础知识篇(二),我们能够更好地理解计算机网络、计算机系统、数据库管理系统以及算法和数据结构等相关概念和知识。这些基础知识对于我们深入研究计算机科学与技术领域是非常重要的,也为我们日后的学习和工作奠定了坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值