verilog 的一个语法,其中的parameter N = 2**M 什么意思?
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
(
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
...全文
相关推荐
分频器的verilog代码
如何用verilog代码编写出各种不同的分频器,本文档给你详细讲述奇数分频、偶数分频、小数分频。。。
localparam和parameter的区别
localparam和parameter的区别,引用特权博客。
m序列verilog源代码
M序列VERILOG源代码.附整个工程文件和测试程序.
搞定Verilog中的generate ,参数传递,for的用法
新工作第一天,看了看别人的代码,发现自己对于Verilog语言还是有很多不清晰的地方,谨以此篇博客。希望自己能够搞清楚一些不清晰地东西。即使将来忘了回过头来再看看也能够马上回忆起来。废话结束。上正文。
Verilog代码可移植性设计
本文介绍了Verilog代码可移植性设计


硬件设计
