找回密码
 立即注册
查看: 4909|回复: 0

移位运算符和位拼接运算符的运用

[复制链接]

10

主题

19

回帖

234

积分

中级会员

积分
234
发表于 2023-8-7 22:17:27 | 显示全部楼层 |阅读模式
1、在Verilog HDL中有两种移位运算符:“<<”(左移位运算符)和“>>“(右移位运算符)。其使用方法如下:

a >> n 或 a<< n
a代表要进行移位的操作数,n代表要移几位。这两种移位都用0来填补移出的空位。
进行移位运算时应注意移位前后变量的位数,下面将给出一例:
4'b1001 << 1 = 5'b10010;  4'b1001 << 2 = 6'100100;
1 << 6 = 32'b1000000;  4'b1001 >> 1 = 4'b0100;
4'b1001 >> 4 = 4'b0000;

2、位拼接运算符{}。用这个运算符可以把两个或多个信号的某些位拼接起来进行运算操作。其使用方法如下:
{信号1的某几位,信号2的某几位,...,...,信号n的某几位}
见下例:
{a,b[3:0],w,3'b101} 等同于 {a,b[3],b[1],b[0],w,1'b1,1'b0,1'b1}

3、什么是跑马灯?8个led灯,每一个时刻8个只有一个被点亮,可以认为8个led灯逐个被点亮过,给人直观的感觉是有一个灯在不断的跑来跑去。跑马灯的实现可以认为是对位数据的操作,可以应用到的位操作可以分为左右移位移位、逐个赋值、循环移位等。

首先定个计数模块,控制延时信息,每个灯被点亮0.5s,系统时钟是50MHz,故产生一个25_000_000的计数器即为0.5s.


方法 一:移位运算符


仿真结果如下:


方法二 :连接符移位操作


仿真结果如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|CrazyFPGA ( 粤ICP备2023025753号 )

GMT+8, 2024-5-14 03:57 , Processed in 0.042132 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表