verilog 的一个语法,其中的parameter N = 2**M 什么意思?

delacrxoix_xu 2011-10-21 06:00:27
module barrel_shifter
(
input [N-1:0] data,
input [M-1:0] distance,
input clk, enable, shift_left,
output reg [N-1:0] sr_out
);

parameter M = 3;
parameter N = 2**M;

// Declare temporary registers
reg [2*N-1:0] tmp;

// Shift/rotate in the specified direction and
// by the specified amount
always @ (posedge clk)
begin
tmp = {data,data};

if (enable == 1'b1)
if (shift_left)
begin
tmp = tmp << distance;
sr_out <= tmp[2*N-1:N];
end
else
begin
tmp = tmp >> distance;
sr_out <= tmp[N-1:0];
end
end

endmodule
...全文
858 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈皮歪詩 2011-10-22
  • 打赏
  • 举报
回复
2 to the power of M,

namely 2^M (1 << M)

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧