📄 aes_top.v
字号:
`timescale 1ns / 10ps
module aes_top (clk,
rst,
aes_en,
aes_datai,
aes_oe,
aes_we,
aes_addr,
aes_datao,
aes_done
);
input clk;
input rst;
input aes_en;
input [7:0]aes_datai;
output aes_oe;
output aes_we;
output [7:0]aes_addr;
output [7:0]aes_datao;
output aes_done;
reg aes_oe;
reg aes_we;
reg [7:0]aes_addr;
reg [7:0]aes_datao;
reg aes_done;
reg [5:0]counter;
reg [127:0]M;
reg [127:0]K;
reg ld;
reg kld0;
reg [31:0]key;
wire [127:0]text_out;
reg [31:0]text_in;
wire done;
wire [7:0]aes_datai;
always@(posedge clk)
if (rst)
begin
aes_oe <=1;
aes_we<=0;
aes_addr<= 8'd0;
aes_datao<=0;
aes_done<=0;
key <= 32'hx;
text_in <= 32'hx;
ld <=0;
kld0 <=0;
end
else
begin
case(counter)
'd0: begin
aes_oe<=1;
aes_addr<= 8'd15;
end
'd1:begin
aes_addr<= 8'd14;
end
'd2:begin
aes_addr<= 8'd13;
K[127:120]<=aes_datai;
end
'd3:begin
aes_addr<= 8'd12;
K[119:112]<=aes_datai;
end
'd4:begin
aes_addr<= 8'd11;
K[111:104]<=aes_datai;
end
'd5:begin
aes_addr<= 8'd10;
K[103:96]<=aes_datai;
end
'd6:begin
aes_addr<= 8'd9;
K[95:88]<=aes_datai;
end
'd7:begin
aes_addr<= 8'd8;
K[87:80]<=aes_datai;
end
'd8:begin
aes_addr<= 8'd7;
K[79:72]<=aes_datai;
end
'd9:begin
aes_addr<= 8'd6;
K[71:64]<=aes_datai;
end
'd10: begin
aes_addr<= 8'd5;
K[63:56]<=aes_datai;
end
'd11:begin
aes_addr<= 8'd4;
K[55:48]<=aes_datai;
end
'd12:begin
aes_addr<= 8'd3;
K[47:40]<=aes_datai;
end
'd13:begin
aes_addr<= 8'd2;
K[39:32]<=aes_datai;
end
'd14:begin
aes_addr<= 8'd1;
K[31:24]<=aes_datai;
end
'd15:begin
aes_addr<= 8'd0;
K[23:16]<=aes_datai;
end
'd16:begin
aes_addr<= 8'd31;
K[15:8]<=aes_datai;
end
'd17:begin
aes_addr<= 8'd30;
K[7:0]<=aes_datai;
end
'd18:begin
aes_addr<= 8'd29;
M[127:120]<=aes_datai;
end
'd19:begin
aes_addr<= 8'd28;
M[119:112]<=aes_datai;
end
'd20: begin
aes_addr<= 8'd27;
M[111:104]<=aes_datai;
end
'd21:begin
aes_addr<= 8'd26;
M[103:96]<=aes_datai;
end
'd22:begin
aes_addr<= 8'd25;
M[95:88]<=aes_datai;
end
'd23:begin
aes_addr<= 8'd24;
M[87:80]<=aes_datai;
end
'd24:begin
aes_addr<= 8'd23;
M[79:72]<=aes_datai;
end
'd25:begin
aes_addr<= 8'd22;
M[71:64]<=aes_datai;
end
'd26:begin
aes_addr<= 8'd21;
M[63:56]<=aes_datai;
end
'd27:begin
aes_addr<= 8'd20;
M[55:48]<=aes_datai;
end
'd28:begin
aes_addr<= 8'd19;
M[47:40]<=aes_datai;
end
'd29:begin
aes_addr<= 8'd18;
M[39:32]<=aes_datai;
end
'd30: begin
aes_addr<= 8'd17;
M[31:24]<=aes_datai;
end
'd31:begin
aes_addr<= 8'd16;
M[23:16]<=aes_datai;
end
'd32:begin
M[15:8]<=aes_datai;
end
'd33:begin
aes_oe<=0;
M[7:0]<=aes_datai;
ld <=1;
kld0 <=1;
text_in <=M[127:96];
key <= K[127:96];
end
'd34:begin
ld <=0;
kld0 <=0;
text_in <=M[95:64];
key <= K[95:64];
end
'd35:begin
text_in <=M[63:32];
key <= K[63:32];
end
'd36:begin
text_in <=M[31:0];
key <= K[31:0];
end
'd37:begin
key <= 32'hx;
text_in <= 32'hx;
end
'd38:begin
aes_we <=1;
end
'd39:begin
aes_addr<= 8'd31;
aes_datao <= text_out[127:120];
end
'd40:begin
aes_addr<= 8'd30;
aes_datao <= text_out[119:112];
end
'd41:begin
aes_addr<= 8'd29;
aes_datao <= text_out[111:104];
end
'd42:begin
aes_addr<= 8'd28;
aes_datao <= text_out[103:96];
end
'd43:begin
aes_addr<= 8'd27;
aes_datao <= text_out[95:88];
end
'd44:begin
aes_addr<= 8'd26;
aes_datao <= text_out[87:80];
end
'd45:begin
aes_addr<= 8'd25;
aes_datao <= text_out[79:72];
end
'd46:begin
aes_addr<= 8'd24;
aes_datao <= text_out[71:64];
end
'd47:begin
aes_addr<= 8'd23;
aes_datao <= text_out[63:56];
end
'd48:begin
aes_addr<= 8'd22;
aes_datao <= text_out[55:48];
end
'd49:begin
aes_addr<= 8'd21;
aes_datao <= text_out[47:40];
end
'd50:begin
aes_addr<= 8'd20;
aes_datao <= text_out[39:32];
end
'd51:begin
aes_addr<= 8'd19;
aes_datao <= text_out[31:24];
end
'd52:begin
aes_addr<= 8'd18;
aes_datao <= text_out[23:16];
end
'd53:begin
aes_addr<= 8'd17;
aes_datao <= text_out[15:8];
end
'd54:begin
aes_addr<= 8'd16;
aes_datao <= text_out[7:0];
aes_done <=1;
end
'd55:begin
aes_done <=0;
end
default: ;
endcase
end
always@(posedge clk)
if(rst)
counter <=0;
else if (aes_en)
begin
if (counter < 6'd37 | done)
counter <= counter +1;
else
counter <= counter;
end
aes myaes ( .clk(clk),
.rst(rst),
.kld0(kld0),
.ld(ld),
.done(done),
.key(key),
.text_in(text_in),
.text_out(text_out)
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -