集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1184|回复: 0

圈子秘钥的生成

[复制链接]
小舍YZ 发表于 2017-8-22 15:50:16 | 显示全部楼层 |阅读模式
圈子秘钥的生成

module key_get(input [1:56] pre_key,   
   input des_mode,
               input [3:0] inter_num,
               output wire [1:48] new_key,
               output reg [1:56] out_key);
               
   
  reg pre_key_0, pre_key_1;
  reg [1:56] pre_key_var;
               
  always @(*)
  begin
  if(des_mode == 1'b0)  
  begin   
case(inter_num)   
4'd0, 4'd1, 4'd8, 4'd15:   
begin   
   pre_key_var = pre_key;   
   pre_key_0 = pre_key_var[1];   
   pre_key_var[1:28] =  pre_key_var[1:28] << 1;   
   pre_key_var[28] = pre_key_0;   
   pre_key_0 = pre_key_var[29];   
   pre_key_var[29:56] =  pre_key_var[29:56] << 1;   
   pre_key_var[56] = pre_key_0;     
end         4'd2, 4'd3, 4'd4, 4'd5, 4'd6, 4'd7, 4'd9, 4'd10, 4'd11,
4'd12,
4'd13, 4'd14:   
begin   
   pre_key_var = pre_key;   
   {pre_key_1, pre_key_0} = pre_key_var[1:2];
  
   pre_key_var[1:28] =  pre_key_var[1:28] << 2;   
   pre_key_var[27:28] = {pre_key_1, pre_key_0};   
   {pre_key_1, pre_key_0} = pre_key_var[29:30];   
   pre_key_var[29:56] =  pre_key_var[29:56] << 2;   
   pre_key_var[55:56] = {pre_key_1, pre_key_0};     
end   
  endcase  
  end  
else  
begin   
    case(inter_num)     
4'd0: pre_key_var = pre_key;   
4'd1, 4'd8, 4'd15:   
begin     
   pre_key_var = pre_key;     
   pre_key_0 = pre_key_var[28];     
   pre_key_var[1:28] =  pre_key_var[1:28] >> 1;   
   pre_key_var[1] = pre_key_0;   
   pre_key_0 = pre_key_var[56];     
   pre_key_var[29:56] =  pre_key_var[29:56] >> 1;   
   pre_key_var[29] = pre_key_0;      
end         
default:     
begin        
   pre_key_var = pre_key;     
   {pre_key_1, pre_key_0} = pre_key_var[27:28];   
   pre_key_var[1:28] =  pre_key_var[1:28] >> 2;   
   pre_key_var[1:2] = {pre_key_1, pre_key_0};   
   {pre_key_1, pre_key_0} = pre_key_var[55:56];   
   pre_key_var[29:56] =  pre_key_var[29:56] >> 2;   
   pre_key_var[29:30] = {pre_key_1, pre_key_0};      
end     
endcase  
end   
out_key = pre_key_var;
  end
     
assign   new_key =  

                                        {pre_key_var[14],pre_key_var[17],pre_key_var[11],pre_key_var[24],pre_key_var[1],pre_key_var[5],         
                                          
                                        pre_key_var[3],pre_key_var[28],pre_key_var[15],pre_key_var[6],pre_key_var[21],pre_key_var[10],        
                                                       
                                        pre_key_var[23],pre_key_var[19],pre_key_var[12],pre_key_var[4],pre_key_var[26],pre_key_var[8],        
                                                       
                                        pre_key_var[16],pre_key_var[7],pre_key_var[27],pre_key_var[20],pre_key_var[13],pre_key_var[2],        
                                                       
                                        pre_key_var[41],pre_key_var[52],pre_key_var[31],pre_key_var[37],pre_key_var[47],pre_key_var[55],      
                                                                 
                                        pre_key_var[30],pre_key_var[40],pre_key_var[51],pre_key_var[45],pre_key_var[33],pre_key_var[48],      
                                                                 
                                        pre_key_var[44],pre_key_var[49],pre_key_var[39],pre_key_var[56],pre_key_var[34],pre_key_var[53],      
                                                                 
                                        pre_key_var[46],pre_key_var[42],pre_key_var[50],pre_key_var[36],pre_key_var[29],pre_key_var[32]};
                                                  
endmodule

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-20 09:22 , Processed in 0.058667 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表