题解 | #256选1选择器#(语法学习)

256选1选择器

https://www.nowcoder.com/practice/a0b6ee521e534826b44fbf5e24cd4aa0

`timescale 1ns/1ns

module top_module (
	input [255:0] in,
	input [7:0] sel,
	output  out
);

assign out = in[sel];
//有一些同学可能会用case语句去一个一个的列出可能,但是这样的话还不如直接赋值简单,也可以采用for循环去定义
endmodule

有些同学可能会认为 这里的索引一定要是常数。其实不然 向量索引可以是可变的,只要综合器可以确定所选择位的宽度是恒定的就可以。(参照Hdlbits第55题256选一的暗示)

当然 也有报错的情况 说 "is not a constant" 表示它无法证明选择宽度是常量

比如这个索引:in[ sel*4+3 : sel*4 ]

所以Verilog-2001 版本出现了新的语法:可以将上述语句修改为 out = in[sel*4 +:4]; 如果sel是4 那这句等效为:in[19:16]

笔记:

注:本人语法学习参考了CSDN博客:FPGA开发备忘录的内容

全部评论
这里实际综合应该会出问题吧,in[sel],要求索引是常数
点赞 回复 分享
发布于 2023-05-29 16:24 江苏

相关推荐

迷茫的大四🐶:好一个误闯天家,我也想闯一闯
点赞 评论 收藏
分享
野猪不是猪🐗:😇:恭喜你以出色的表现成为xxx的一员 😨:您以进入本公司人才库 实际点开:您愿望单中的xxx正在特卖!
点赞 评论 收藏
分享
评论
32
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务