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传递)

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!感谢提问。下面是有关 K210 学习笔记五中串口通信的一些内容: 在 K210 开发板上,串口是一种常见的通信接口,用于将数据从一个设备传输到另一个设备。串口通信通常使用 UART (Universal Asynchronous Receiver/Transmitter) 协议。 要在 K210 上进行串口通信,首先需要使用两个引脚:一个用于接收数据(RX),一个用于发送数据(TX)。这些引脚可以通过 GPIO 端口与外部设备连接。 在 K210 的开发环境中,可以使用 MaixPy 或者 Kendryte Standalone SDK 进行串口编程。 在 MaixPy 中,可以使用 `uart` 模块来进行串口通信。例如,要初始化一个串口对象并设置波特率为 115200,可以使用以下代码: ```python from machine import UART uart = UART(UART.UART1, 115200) ``` 然后,可以使用 `uart.write()` 函数发送数据,使用 `uart.read()` 函数接收数据。例如: ```python uart.write("Hello, world!\n") data = uart.read(10) ``` 在 Kendryte Standalone SDK 中,可以使用 `uart.h` 头文件中的函数来进行串口通信。例如,要初始化一个串口对象并设置波特率为 115200,可以使用以下代码: ```c #include "uart.h" uart_init(UART_DEVICE_1, 115200); ``` 然后,可以使用 `uart_send_data()` 函数发送数据,使用 `uart_receive_data()` 函数接收数据。例如: ```c uart_send_data(UART_DEVICE_1, "Hello, world!\n", 14); char buffer[10]; uart_receive_data(UART_DEVICE_1, buffer, 10); ``` 以上是关于 K210 学习笔记五中串口通信的简要介绍。如果你有更具体的问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值