⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ffunc.v

📁 一个关于DES算法的verilog语言实现,包括了各个实现模块以及测试模块
💻 V
字号:
/////////////////////////////////////////////////////////////////////
////                                                             ////
////                                                             ////
////  F函数模块                                                  ////
////                                                             ////
/////////////////////////////////////////////////////////////////////

module  crp(P, R, K_sub);
output	[1:32]	P;
input	[1:32]	R;
input	[1:48]	K_sub;

wire	[1:48] Temp1;
wire	[1:48] Temp2;
wire	[1:32] Temp3;

// 把R换位并扩展为48位,以便和子密钥进行异或运算
assign Temp1[1:48] = {	R[32], R[1], R[2], R[3], R[4], R[5], R[4], R[5],
			R[6], R[7], R[8], R[9], R[8], R[9], R[10], R[11],
			R[12], R[13], R[12], R[13], R[14], R[15], R[16],
			R[17], R[16], R[17], R[18], R[19], R[20], R[21],
			R[20], R[21], R[22], R[23], R[24], R[25], R[24],
			R[25], R[26], R[27], R[28], R[29], R[28], R[29],
			R[30], R[31], R[32], R[1]};

assign Temp2 = Temp1 ^ K_sub;  

// 调用S盒模块,利用Temp2寻址,得出Temp3各位的值 
sbox1 u0( .addr(Temp2[01:06]), .dout(Temp3[01:04]) );
sbox2 u1( .addr(Temp2[07:12]), .dout(Temp3[05:08]) );
sbox3 u2( .addr(Temp2[13:18]), .dout(Temp3[09:12]) );
sbox4 u3( .addr(Temp2[19:24]), .dout(Temp3[13:16]) );
sbox5 u4( .addr(Temp2[25:30]), .dout(Temp3[17:20]) );
sbox6 u5( .addr(Temp2[31:36]), .dout(Temp3[21:24]) );
sbox7 u6( .addr(Temp2[37:42]), .dout(Temp3[25:28]) );
sbox8 u7( .addr(Temp2[43:48]), .dout(Temp3[29:32]) ); 

// 将Temp3换位并赋给输出P
assign P[1:32] = {	Temp3[16], Temp3[7], Temp3[20], Temp3[21], Temp3[29], Temp3[12],
            Temp3[28],Temp3[17], Temp3[1], Temp3[15], Temp3[23], Temp3[26], Temp3[5],
            Temp3[18],Temp3[31], Temp3[10], Temp3[2], Temp3[8], Temp3[24], Temp3[14],
			Temp3[32],Temp3[27], Temp3[3], Temp3[9], Temp3[19], Temp3[13], Temp3[30],
			Temp3[6],Temp3[22], Temp3[11], Temp3[4], Temp3[25]};

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -