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

📄 key_sel3.v

📁 这是一个vhdl的 DES编程软件,希望大家喜欢
💻 V
📖 第 1 页 / 共 3 页
字号:
/////////////////////////////////////////////////////////////////////////                                                             ////////  KEY_SEL                                                    ////////  Select one of 16 sub-keys for round                        ////////                                                             ////////  Author: Rudolf Usselmann                                   ////////          rudi@asics.ws                                      ////////                                                             /////////////////////////////////////////////////////////////////////////////                                                             //////// Copyright (C) 2001 Rudolf Usselmann                         ////////                    rudi@asics.ws                            ////////                                                             //////// This source file may be used and distributed without        //////// restriction provided that this copyright statement is not   //////// removed from the file and that any derivative work contains //////// the original copyright notice and the associated disclaimer.////////                                                             ////////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     //////// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   //////// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   //////// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      //////// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         //////// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    //////// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   //////// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        //////// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  //////// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  //////// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  //////// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         //////// POSSIBILITY OF SUCH DAMAGE.                                 ////////                                                             /////////////////////////////////////////////////////////////////////////module  key_sel3(K_sub, key1, key2, key3, roundSel, decrypt);output	[1:48]	K_sub;input	[55:0]	key1, key2, key3;input	[5:0]	roundSel;input		decrypt;wire		decrypt_int;reg	[55:0]	K;reg	[1:48]	K_sub;wire	[1:48]	K1, K2, K3, K4, K5, K6, K7, K8, K9;wire	[1:48]	K10, K11, K12, K13, K14, K15, K16;always @(roundSel or decrypt or key1 or key2 or key3)	case ({decrypt, roundSel[5:4]})		// synopsys full_case parallel_case	   3'b0_00:	K = key1;	   3'b0_01:	K = key2;	   3'b0_10:	K = key3;	   3'b1_00:	K = key3;	   3'b1_01:	K = key2;	   3'b1_10:	K = key1;	endcaseassign decrypt_int = (roundSel[5:4]==2'h1) ? !decrypt : decrypt;always @(K1 or K2 or K3 or K4 or K5 or K6 or K7 or K8 or K9 or K10              or K11 or K12 or K13 or K14 or K15 or K16 or roundSel)	case(roundSel[3:0])		// synopsys full_case parallel_case            0:  K_sub = K1;            1:  K_sub = K2;            2:  K_sub = K3;            3:  K_sub = K4;            4:  K_sub = K5;            5:  K_sub = K6;            6:  K_sub = K7;            7:  K_sub = K8;            8:  K_sub = K9;            9:  K_sub = K10;            10: K_sub = K11;            11: K_sub = K12;            12: K_sub = K13;            13: K_sub = K14;            14: K_sub = K15;            15: K_sub = K16;	endcaseassign K16[1] = decrypt_int ? K[47] : K[40];assign K16[2] = decrypt_int ? K[11] : K[4];assign K16[3] = decrypt_int ? K[26] : K[19];assign K16[4] = decrypt_int ? K[3] : K[53];assign K16[5] = decrypt_int ? K[13] : K[6];assign K16[6] = decrypt_int ? K[41] : K[34];assign K16[7] = decrypt_int ? K[27] : K[20];assign K16[8] = decrypt_int ? K[6] : K[24];assign K16[9] = decrypt_int ? K[54] : K[47];assign K16[10] = decrypt_int ? K[48] : K[41];assign K16[11] = decrypt_int ? K[39] : K[32];assign K16[12] = decrypt_int ? K[19] : K[12];assign K16[13] = decrypt_int ? K[53] : K[46];assign K16[14] = decrypt_int ? K[25] : K[18];assign K16[15] = decrypt_int ? K[33] : K[26];assign K16[16] = decrypt_int ? K[34] : K[27];assign K16[17] = decrypt_int ? K[17] : K[10];assign K16[18] = decrypt_int ? K[5] : K[55];assign K16[19] = decrypt_int ? K[4] : K[54];assign K16[20] = decrypt_int ? K[55] : K[48];assign K16[21] = decrypt_int ? K[24] : K[17];assign K16[22] = decrypt_int ? K[32] : K[25];assign K16[23] = decrypt_int ? K[40] : K[33];assign K16[24] = decrypt_int ? K[20] : K[13];assign K16[25] = decrypt_int ? K[36] : K[29];assign K16[26] = decrypt_int ? K[31] : K[51];assign K16[27] = decrypt_int ? K[21] : K[14];assign K16[28] = decrypt_int ? K[8] : K[1];assign K16[29] = decrypt_int ? K[23] : K[16];assign K16[30] = decrypt_int ? K[52] : K[45];assign K16[31] = decrypt_int ? K[14] : K[7];assign K16[32] = decrypt_int ? K[29] : K[22];assign K16[33] = decrypt_int ? K[51] : K[44];assign K16[34] = decrypt_int ? K[9] : K[2];assign K16[35] = decrypt_int ? K[35] : K[28];assign K16[36] = decrypt_int ? K[30] : K[23];assign K16[37] = decrypt_int ? K[2] : K[50];assign K16[38] = decrypt_int ? K[37] : K[30];assign K16[39] = decrypt_int ? K[22] : K[15];assign K16[40] = decrypt_int ? K[0] : K[52];assign K16[41] = decrypt_int ? K[42] : K[35];assign K16[42] = decrypt_int ? K[38] : K[31];assign K16[43] = decrypt_int ? K[16] : K[9];assign K16[44] = decrypt_int ? K[43] : K[36];assign K16[45] = decrypt_int ? K[44] : K[37];assign K16[46] = decrypt_int ? K[1] : K[49];assign K16[47] = decrypt_int ? K[7] : K[0];assign K16[48] = decrypt_int ? K[28] : K[21];assign K15[1] = decrypt_int ? K[54] : K[33];assign K15[2] = decrypt_int ? K[18] : K[54];assign K15[3] = decrypt_int ? K[33] : K[12];assign K15[4] = decrypt_int ? K[10] : K[46];assign K15[5] = decrypt_int ? K[20] : K[24];assign K15[6] = decrypt_int ? K[48] : K[27];assign K15[7] = decrypt_int ? K[34] : K[13];assign K15[8] = decrypt_int ? K[13] : K[17];assign K15[9] = decrypt_int ? K[4] : K[40];assign K15[10] = decrypt_int ? K[55] : K[34];assign K15[11] = decrypt_int ? K[46] : K[25];assign K15[12] = decrypt_int ? K[26] : K[5];assign K15[13] = decrypt_int ? K[3] : K[39];assign K15[14] = decrypt_int ? K[32] : K[11];assign K15[15] = decrypt_int ? K[40] : K[19];assign K15[16] = decrypt_int ? K[41] : K[20];assign K15[17] = decrypt_int ? K[24] : K[3];assign K15[18] = decrypt_int ? K[12] : K[48];assign K15[19] = decrypt_int ? K[11] : K[47];assign K15[20] = decrypt_int ? K[5] : K[41];assign K15[21] = decrypt_int ? K[6] : K[10];assign K15[22] = decrypt_int ? K[39] : K[18];assign K15[23] = decrypt_int ? K[47] : K[26];assign K15[24] = decrypt_int ? K[27] : K[6];assign K15[25] = decrypt_int ? K[43] : K[22];assign K15[26] = decrypt_int ? K[38] : K[44];assign K15[27] = decrypt_int ? K[28] : K[7];assign K15[28] = decrypt_int ? K[15] : K[49];assign K15[29] = decrypt_int ? K[30] : K[9];assign K15[30] = decrypt_int ? K[0] : K[38];assign K15[31] = decrypt_int ? K[21] : K[0];assign K15[32] = decrypt_int ? K[36] : K[15];assign K15[33] = decrypt_int ? K[31] : K[37];assign K15[34] = decrypt_int ? K[16] : K[50];assign K15[35] = decrypt_int ? K[42] : K[21];assign K15[36] = decrypt_int ? K[37] : K[16];assign K15[37] = decrypt_int ? K[9] : K[43];assign K15[38] = decrypt_int ? K[44] : K[23];assign K15[39] = decrypt_int ? K[29] : K[8];assign K15[40] = decrypt_int ? K[7] : K[45];assign K15[41] = decrypt_int ? K[49] : K[28];assign K15[42] = decrypt_int ? K[45] : K[51];assign K15[43] = decrypt_int ? K[23] : K[2];assign K15[44] = decrypt_int ? K[50] : K[29];assign K15[45] = decrypt_int ? K[51] : K[30];assign K15[46] = decrypt_int ? K[8] : K[42];assign K15[47] = decrypt_int ? K[14] : K[52];assign K15[48] = decrypt_int ? K[35] : K[14];assign K14[1] = decrypt_int ? K[11] : K[19];assign K14[2] = decrypt_int ? K[32] : K[40];assign K14[3] = decrypt_int ? K[47] : K[55];assign K14[4] = decrypt_int ? K[24] : K[32];assign K14[5] = decrypt_int ? K[34] : K[10];assign K14[6] = decrypt_int ? K[5] : K[13];assign K14[7] = decrypt_int ? K[48] : K[24];assign K14[8] = decrypt_int ? K[27] : K[3];assign K14[9] = decrypt_int ? K[18] : K[26];assign K14[10] = decrypt_int ? K[12] : K[20];assign K14[11] = decrypt_int ? K[3] : K[11];assign K14[12] = decrypt_int ? K[40] : K[48];assign K14[13] = decrypt_int ? K[17] : K[25];assign K14[14] = decrypt_int ? K[46] : K[54];assign K14[15] = decrypt_int ? K[54] : K[5];assign K14[16] = decrypt_int ? K[55] : K[6];assign K14[17] = decrypt_int ? K[13] : K[46];assign K14[18] = decrypt_int ? K[26] : K[34];assign K14[19] = decrypt_int ? K[25] : K[33];assign K14[20] = decrypt_int ? K[19] : K[27];assign K14[21] = decrypt_int ? K[20] : K[53];assign K14[22] = decrypt_int ? K[53] : K[4];assign K14[23] = decrypt_int ? K[4] : K[12];assign K14[24] = decrypt_int ? K[41] : K[17];assign K14[25] = decrypt_int ? K[2] : K[8];assign K14[26] = decrypt_int ? K[52] : K[30];assign K14[27] = decrypt_int ? K[42] : K[52];assign K14[28] = decrypt_int ? K[29] : K[35];assign K14[29] = decrypt_int ? K[44] : K[50];assign K14[30] = decrypt_int ? K[14] : K[51];assign K14[31] = decrypt_int ? K[35] : K[45];assign K14[32] = decrypt_int ? K[50] : K[1];assign K14[33] = decrypt_int ? K[45] : K[23];assign K14[34] = decrypt_int ? K[30] : K[36];assign K14[35] = decrypt_int ? K[1] : K[7];assign K14[36] = decrypt_int ? K[51] : K[2];assign K14[37] = decrypt_int ? K[23] : K[29];assign K14[38] = decrypt_int ? K[31] : K[9];assign K14[39] = decrypt_int ? K[43] : K[49];assign K14[40] = decrypt_int ? K[21] : K[31];assign K14[41] = decrypt_int ? K[8] : K[14];assign K14[42] = decrypt_int ? K[0] : K[37];assign K14[43] = decrypt_int ? K[37] : K[43];assign K14[44] = decrypt_int ? K[9] : K[15];assign K14[45] = decrypt_int ? K[38] : K[16];assign K14[46] = decrypt_int ? K[22] : K[28];assign K14[47] = decrypt_int ? K[28] : K[38];assign K14[48] = decrypt_int ? K[49] : K[0];assign K13[1] = decrypt_int ? K[25] : K[5];assign K13[2] = decrypt_int ? K[46] : K[26];assign K13[3] = decrypt_int ? K[4] : K[41];assign K13[4] = decrypt_int ? K[13] : K[18];assign K13[5] = decrypt_int ? K[48] : K[53];assign K13[6] = decrypt_int ? K[19] : K[24];assign K13[7] = decrypt_int ? K[5] : K[10];assign K13[8] = decrypt_int ? K[41] : K[46];assign K13[9] = decrypt_int ? K[32] : K[12];assign K13[10] = decrypt_int ? K[26] : K[6];assign K13[11] = decrypt_int ? K[17] : K[54];assign K13[12] = decrypt_int ? K[54] : K[34];assign K13[13] = decrypt_int ? K[6] : K[11];assign K13[14] = decrypt_int ? K[3] : K[40];assign K13[15] = decrypt_int ? K[11] : K[48];assign K13[16] = decrypt_int ? K[12] : K[17];assign K13[17] = decrypt_int ? K[27] : K[32];assign K13[18] = decrypt_int ? K[40] : K[20];assign K13[19] = decrypt_int ? K[39] : K[19];assign K13[20] = decrypt_int ? K[33] : K[13];assign K13[21] = decrypt_int ? K[34] : K[39];assign K13[22] = decrypt_int ? K[10] : K[47];assign K13[23] = decrypt_int ? K[18] : K[55];assign K13[24] = decrypt_int ? K[55] : K[3];assign K13[25] = decrypt_int ? K[16] : K[49];assign K13[26] = decrypt_int ? K[7] : K[16];assign K13[27] = decrypt_int ? K[1] : K[38];assign K13[28] = decrypt_int ? K[43] : K[21];assign K13[29] = decrypt_int ? K[31] : K[36];assign K13[30] = decrypt_int ? K[28] : K[37];assign K13[31] = decrypt_int ? K[49] : K[31];assign K13[32] = decrypt_int ? K[9] : K[42];assign K13[33] = decrypt_int ? K[0] : K[9];assign K13[34] = decrypt_int ? K[44] : K[22];assign K13[35] = decrypt_int ? K[15] : K[52];assign K13[36] = decrypt_int ? K[38] : K[43];assign K13[37] = decrypt_int ? K[37] : K[15];assign K13[38] = decrypt_int ? K[45] : K[50];assign K13[39] = decrypt_int ? K[2] : K[35];assign K13[40] = decrypt_int ? K[35] : K[44];assign K13[41] = decrypt_int ? K[22] : K[0];assign K13[42] = decrypt_int ? K[14] : K[23];assign K13[43] = decrypt_int ? K[51] : K[29];assign K13[44] = decrypt_int ? K[23] : K[1];assign K13[45] = decrypt_int ? K[52] : K[2];assign K13[46] = decrypt_int ? K[36] : K[14];assign K13[47] = decrypt_int ? K[42] : K[51];assign K13[48] = decrypt_int ? K[8] : K[45];assign K12[1] = decrypt_int ? K[39] : K[48];assign K12[2] = decrypt_int ? K[3] : K[12];assign K12[3] = decrypt_int ? K[18] : K[27];assign K12[4] = decrypt_int ? K[27] : K[4];assign K12[5] = decrypt_int ? K[5] : K[39];assign K12[6] = decrypt_int ? K[33] : K[10];assign K12[7] = decrypt_int ? K[19] : K[53];assign K12[8] = decrypt_int ? K[55] : K[32];assign K12[9] = decrypt_int ? K[46] : K[55];assign K12[10] = decrypt_int ? K[40] : K[17];assign K12[11] = decrypt_int ? K[6] : K[40];assign K12[12] = decrypt_int ? K[11] : K[20];assign K12[13] = decrypt_int ? K[20] : K[54];

⌨️ 快捷键说明

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