一、verilog中數(shù)組
1、一維數(shù)組
看了別人的博客有的人也稱reg [31:0] add0[0:12]這樣的數(shù)組為二維數(shù)組,其實(shí)中二維數(shù)組不是真正意義上的數(shù)組,而是由多個(gè)寄存器組成的ROM或者RAM。我覺得這樣理解好記一點(diǎn):這個(gè)是一維數(shù)組,一共有0到12共13組數(shù)據(jù),每組數(shù)據(jù)的寬度是0到31一共32個(gè)位寬。
reg [31:0] add0[0:12];//前面[31:0]表示位寬,add0代表存儲(chǔ)的名字,[0:12]代表0到12共13個(gè)組
reg [31:0] add1[0:6];//前面[31:0]表示位寬,add1代表存儲(chǔ)的名字,[0:6]代表0到6共7個(gè)組
reg [31:0] add2[0:3];
reg [31:0] add3[0:1];
assign data=add0[6][31:24];//調(diào)用第7組的高8位數(shù)據(jù)
2、二維數(shù)組
reg [23:0] window_mul_result[4:0][4:0];//reg [23:0] window_mul_result[0:4][0:4]效果好像是一樣的
二、加法實(shí)現(xiàn)的兩種方法:
1. 方法一
reg [23:0] window_mul_result[4:0][4:0];
wire [31:0] window_sum;
//=====================方法1 此方法消耗較大的lut===================================================
assign window_sum=window_mul_result[0][0]+window_mul_result[0][1]+window_mul_result[0][2]+window_mul_result[0][3]+window_mul_result[0][4]+
window_mul_result[1][0]+window_mul_result[1][1]+window_mul_result[1][2]+window_mul_result[1][3]+window_mul_result[1][4]+
window_mul_result[2][0]+window_mul_result[2][1]+window_mul_result[2][2]+window_mul_result[2][3]+window_mul_result[2][4]+
window_mul_result[3][0]+window_mul_result[3][1]+window_mul_result[3][2]+window_mul_result[3][3]+window_mul_result[3][4]+
window_mul_result[4][0]+window_mul_result[4][1]+window_mul_result[4][2]+window_mul_result[4][3]+window_mul_result[4][4];
優(yōu)勢(shì):簡(jiǎn)單易于編程
2、方法二
//==============================方法2 采用加法樹add tree=========================================
reg [23:0] window_mul_result[4:0][4:0];
wire [31:0] window_sum;
reg [31:0] add0[0:12];
reg [31:0] add1[0:6];
reg [31:0] add2[0:3];
reg [31:0] add3[0:1];
wire [16-1:0] window_mul_result_4tree[0:24];//這個(gè)定于的作用是將reg [23:0] window_mul_result[4:0][4:0]二維數(shù)組變?yōu)橐痪S數(shù)組,
//每一組數(shù)據(jù)的位寬由24位縮小為16位。二維變?yōu)橐痪S數(shù)組的好處就是循環(huán)的時(shí)候好遍歷索引
always@(posedge clk)begin
//============add0================
for(i=0;i<12;i=i+1)begin
add0[i]<=window_mul_result_4tree[i*2]+window_mul_result_4tree[i*2+1];
end
add0[12]<=window_mul_result_4tree[24]+0;
//==============add1==================
for(i=0;i<6;i=i+1)begin
add1[i]<=add0[i*2]+add0[i*2+1];
end
add1[6]<=add0[12]+0;
//==============add2==================
for(i=0;i<3;i=i+1)begin
add2[i]<=add1[i*2]+add1[i*2+1];
end
add2[3]<=add1[6]+0;
//==============add3==================
for(i=0;i<2;i=i+1)begin
add3[i]<=add2[i*2]+add2[i*2+1];
end
end
assign window_sum=add3[0]+add3[1];
優(yōu)勢(shì):節(jié)約資源,但是會(huì)晚4個(gè)時(shí)鐘出結(jié)果文章來源:http://www.zghlxwxcb.cn/news/detail-507562.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-507562.html
到了這里,關(guān)于verilog數(shù)組的定義、轉(zhuǎn)換和加法器的實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!