Verilog基本知识点总结

#学习记录#

1 verilog中~和!的区别

  • !表示逻辑取反,~表示按位取反。
  • 当面对位宽为1时,两个操作符的作用相同。
  • 当位宽不为1时:

~会将变量的各个位依次取反:a[2:0]={1,1,0},~a={0,0,1}。

!会将变量作为一个值去处理:a[2:0]={1,1,0},a=6,!a=0; a[2:0]={0,0,0},!a=1。

2 verilog中的复制拼接

a=2'h4,b=2'h5将a,b拼接起来{a,b}=4'h45。如果要将a,b重复拼接32次,需要用到复制拼接,如下所示:

c={32{a,b}};
//等效于
c={{a,b},{a,b},{a,b}...{a,b}};

便于代码维护,定义一个parameter,如下所示:

parameter COPY_NUM = 'd32;
c={COPY_NUM{a,b}};

这里的复制次数必须为常量,不可以为变量。

3 verilog参数例化

  • 参数定义parameter,如下所示:
module print#(
    parameter TIMES =32)
(
    input clk,
    input rst_n,
    output reg print_out
);
  • 参数例化
ram #(
    .width(16),
    .depth(4)
)
ram_test(
    .clk(clk),
    .rst(rst)
);

在模块例化时可以使用参数传递如上所示。

4 verilog中^的用法

  • 奇偶判断:a=1010,^a=1^0^1^0=0。
  • 格雷码与二进制码转换

二进制码转换为格雷码:格雷码(n)=二进制码(n+1)^二进制码(n)。代码如下:

gray=(bin>>1)^bin;

格雷码转换为二进制码:二进码(n)=二进制码(n+1)^格雷码(n)。代码如下:

    for(i = 0; i < n-1; i++)
        b[i] = ^(gray >> i);   //gray移位后按位异或
  • 奇数分频 

_______________________________________________________________________

会持续更新...

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值