verilog - Verilog - 使用 1 位输入进行屏蔽
问题描述
我有一种情况,我不确定存在什么可以解决它的正确语法。在我的代码中,我有
reg [N-1:0] bit_list;
和另一个变量 n,它计算我插入 bit_list 的位数。偶尔根据输入 - 我需要在单个 posedge 期间将 bit_list 移动 1,然后将 bit_list[Nn] 更改为我的输入。我的想法是我可以做到以下几点
bit_list<=bit_list<<1 || X
其中 X 应该被替换为一些 N-1 长向量,该向量除 Nn 之外的所有位都为零。问题是我不知道描述这样的向量 - 因此我的问题。我确信我的问题很简单,可以通过各种简单的方式来解决,所以我的问题的任何解决方案都会奏效。
抱歉,如果我的问题是新手,因为我还是新手,当然会得到帮助。
解决方案
您可以使用口罩。(顺便说一句||
,逻辑或,你想要|
一个按位或)
reg [N-1:0] mask;
mask = ({ {N{1'b0}},1'b0}) << n) - 1; // the concat is needed in case N > 32
bit_list<=((bit_list<<1) & ~mask) | (X & mask);
推荐阅读
- php - PHP 通过引用传递错误?
- python-3.x - 我有麻烦了,我不想重新安装操作系统
- dialogflow-es - 如何在对话流中添加默认后备意图
- html - 如何设置最大高度:宽度;没有影响?
- arrays - 环回仅从对象的属性数组中获取一个对象
- python-3.x - 如何使用变量和双引号?
- git - Github 新手:如何查看正在进行的工作
- python - sqlalchemy.orm.exc.UnmappedInstanceError:类'builtins.NoneType'未映射
- php - WooCommerce 在电子邮件标题中显示名字
- php - 使用 ongr-io/ElasticsearchDSL 包添加高亮