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

📄 key_sel.v

📁 des加密算法的verilog语言的实现
💻 V
📖 第 1 页 / 共 2 页
字号:
/////////////////////////////////////////////////////////////////////////                                                             ////////  KEY_SEL_Half                                               ////////  Select one of 16 sub-keys for round                        ////////                                                             ////////  Author: Rudolf Usselmann                                   ////////          rudi@asics.ws                                      ////////                                                             ////////  Original: Rudolf Usselmann                                 ////////                                                             ////////  Modified : 2004/07/10                                      ////
////  Modified: Sakamoto YASUHIRO                                ////////  Modified: for about Half slices decreased                  ////////   (XILINX SPARTAN2 Number of SLICEs 546 to 258)             ////////    Web   : http://hp.vector.co.jp/authors/VA014069          ////
////                                                             /////////////////////////////////////////////////////////////////////////////                                                             //////// 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_selh(K_sub, K, roundSel, decrypt);output [1:48] K_sub;input [55:0] K;input [3:0] roundSel;input   decrypt;reg  [1:48] K_sub;wire [1:48] K1, K2, K3, K4, K5, K6, K7, K8;
////  Modified: for about Half slices decreasedwire [2:0] roundSelH;  // ADD Sakamoto
wire   decryptH;  // ADD Sakamoto
assign roundSelH[2:0] = roundSel[3] ? (~roundSel[2:0]) : roundSel[2:0];
assign decryptH  = decrypt ^ roundSel[3];always @(K1 or K2 or K3 or K4 or K5 or K6 or K7 or K8 or roundSelH)    case (roundSelH)    // 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;    endcaseassign K8[1]  = decryptH ? K[6]  : K[24];assign K8[2]  = decryptH ? K[27] : K[20];assign K8[3]  = decryptH ? K[10] : K[3] ;assign K8[4]  = decryptH ? K[19] : K[12];assign K8[5]  = decryptH ? K[54] : K[47];assign K8[6]  = decryptH ? K[25] : K[18];assign K8[7]  = decryptH ? K[11] : K[4] ;assign K8[8]  = decryptH ? K[47] : K[40];assign K8[9]  = decryptH ? K[13] : K[6] ;assign K8[10] = decryptH ? K[32] : K[25];assign K8[11] = decryptH ? K[55] : K[48];assign K8[12] = decryptH ? K[3]  : K[53];assign K8[13] = decryptH ? K[12] : K[5] ;assign K8[14] = decryptH ? K[41] : K[34];assign K8[15] = decryptH ? K[17] : K[10];assign K8[16] = decryptH ? K[18] : K[11];assign K8[17] = decryptH ? K[33] : K[26];assign K8[18] = decryptH ? K[46] : K[39];assign K8[19] = decryptH ? K[20] : K[13];assign K8[20] = decryptH ? K[39] : K[32];assign K8[21] = decryptH ? K[40] : K[33];assign K8[22] = decryptH ? K[48] : K[41];assign K8[23] = decryptH ? K[24] : K[17];assign K8[24] = decryptH ? K[4]  : K[54];assign K8[25] = decryptH ? K[52] : K[45];assign K8[26] = decryptH ? K[15] : K[8] ;assign K8[27] = decryptH ? K[9]  : K[2] ;assign K8[28] = decryptH ? K[51] : K[44];assign K8[29] = decryptH ? K[35] : K[28];assign K8[30] = decryptH ? K[36] : K[29];assign K8[31] = decryptH ? K[2]  : K[50];assign K8[32] = decryptH ? K[45] : K[38];assign K8[33] = decryptH ? K[8]  : K[1] ;assign K8[34] = decryptH ? K[21] : K[14];assign K8[35] = decryptH ? K[23] : K[16];assign K8[36] = decryptH ? K[42] : K[35];assign K8[37] = decryptH ? K[14] : K[7] ;assign K8[38] = decryptH ? K[49] : K[42];assign K8[39] = decryptH ? K[38] : K[31];assign K8[40] = decryptH ? K[43] : K[36];assign K8[41] = decryptH ? K[30] : K[23];assign K8[42] = decryptH ? K[22] : K[15];assign K8[43] = decryptH ? K[28] : K[21];assign K8[44] = decryptH ? K[0]  : K[52];assign K8[45] = decryptH ? K[1]  : K[49];assign K8[46] = decryptH ? K[44] : K[37];assign K8[47] = decryptH ? K[50] : K[43];assign K8[48] = decryptH ? K[16] : K[9] ;   assign K7[1]  = decryptH ? K[20] : K[10];assign K7[2]  = decryptH ? K[41] : K[6] ;assign K7[3]  = decryptH ? K[24] : K[46];assign K7[4]  = decryptH ? K[33] : K[55];assign K7[5]  = decryptH ? K[11] : K[33];assign K7[6]  = decryptH ? K[39] : K[4] ;assign K7[7]  = decryptH ? K[25] : K[47];assign K7[8]  = decryptH ? K[4]  : K[26];assign K7[9]  = decryptH ? K[27] : K[17];assign K7[10] = decryptH ? K[46] : K[11];assign K7[11] = decryptH ? K[12] : K[34];assign K7[12] = decryptH ? K[17] : K[39];assign K7[13] = decryptH ? K[26] : K[48];assign K7[14] = decryptH ? K[55] : K[20];assign K7[15] = decryptH ? K[6]  : K[53];assign K7[16] = decryptH ? K[32] : K[54];assign K7[17] = decryptH ? K[47] : K[12];assign K7[18] = decryptH ? K[3]  : K[25];assign K7[19] = decryptH ? K[34] : K[24];assign K7[20] = decryptH ? K[53] : K[18];assign K7[21] = decryptH ? K[54] : K[19];assign K7[22] = decryptH ? K[5]  : K[27];assign K7[23] = decryptH ? K[13] : K[3] ;assign K7[24] = decryptH ? K[18] : K[40];assign K7[25] = decryptH ? K[7]  : K[31];assign K7[26] = decryptH ? K[29] : K[49];assign K7[27] = decryptH ? K[23] : K[43];assign K7[28] = decryptH ? K[38] : K[30];assign K7[29] = decryptH ? K[49] : K[14];assign K7[30] = decryptH ? K[50] : K[15];assign K7[31] = decryptH ? K[16] : K[36];assign K7[32] = decryptH ? K[0]  : K[51];assign K7[33] = decryptH ? K[22] : K[42];assign K7[34] = decryptH ? K[35] : K[0] ;assign K7[35] = decryptH ? K[37] : K[2] ;assign K7[36] = decryptH ? K[1]  : K[21];assign K7[37] = decryptH ? K[28] : K[52];assign K7[38] = decryptH ? K[8]  : K[28];assign K7[39] = decryptH ? K[52] : K[44];assign K7[40] = decryptH ? K[2]  : K[22];assign K7[41] = decryptH ? K[44] : K[9] ;assign K7[42] = decryptH ? K[36] : K[1] ;assign K7[43] = decryptH ? K[42] : K[7] ;assign K7[44] = decryptH ? K[14] : K[38];assign K7[45] = decryptH ? K[15] : K[35];assign K7[46] = decryptH ? K[31] : K[23];assign K7[47] = decryptH ? K[9]  : K[29];assign K7[48] = decryptH ? K[30] : K[50];assign K6[1]  = decryptH ? K[34] : K[53];assign K6[2]  = decryptH ? K[55] : K[17];assign K6[3]  = decryptH ? K[13] : K[32];assign K6[4]  = decryptH ? K[47] : K[41];assign K6[5]  = decryptH ? K[25] : K[19];assign K6[6]  = decryptH ? K[53] : K[47];assign K6[7]  = decryptH ? K[39] : K[33];assign K6[8]  = decryptH ? K[18] : K[12];assign K6[9]  = decryptH ? K[41] : K[3] ;assign K6[10] = decryptH ? K[3]  : K[54];assign K6[11] = decryptH ? K[26] : K[20];assign K6[12] = decryptH ? K[6]  : K[25];assign K6[13] = decryptH ? K[40] : K[34];assign K6[14] = decryptH ? K[12] : K[6] ;assign K6[15] = decryptH ? K[20] : K[39];assign K6[16] = decryptH ? K[46] : K[40];assign K6[17] = decryptH ? K[4]  : K[55];assign K6[18] = decryptH ? K[17] : K[11];assign K6[19] = decryptH ? K[48] : K[10];assign K6[20] = decryptH ? K[10] : K[4] ;assign K6[21] = decryptH ? K[11] : K[5] ;assign K6[22] = decryptH ? K[19] : K[13];assign K6[23] = decryptH ? K[27] : K[46];assign K6[24] = decryptH ? K[32] : K[26];assign K6[25] = decryptH ? K[21] : K[44];assign K6[26] = decryptH ? K[43] : K[35];assign K6[27] = decryptH ? K[37] : K[29];assign K6[28] = decryptH ? K[52] : K[16];assign K6[29] = decryptH ? K[8]  : K[0] ;assign K6[30] = decryptH ? K[9]  : K[1] ;assign K6[31] = decryptH ? K[30] : K[22];assign K6[32] = decryptH ? K[14] : K[37];assign K6[33] = decryptH ? K[36] : K[28];assign K6[34] = decryptH ? K[49] : K[45];assign K6[35] = decryptH ? K[51] : K[43];assign K6[36] = decryptH ? K[15] : K[7] ;assign K6[37] = decryptH ? K[42] : K[38];assign K6[38] = decryptH ? K[22] : K[14];assign K6[39] = decryptH ? K[7]  : K[30];assign K6[40] = decryptH ? K[16] : K[8] ;assign K6[41] = decryptH ? K[31] : K[50];assign K6[42] = decryptH ? K[50] : K[42];assign K6[43] = decryptH ? K[1]  : K[52];assign K6[44] = decryptH ? K[28] : K[51];assign K6[45] = decryptH ? K[29] : K[21];assign K6[46] = decryptH ? K[45] : K[9] ;assign K6[47] = decryptH ? K[23] : K[15];assign K6[48] = decryptH ? K[44] : K[36];assign K5[1]  = decryptH ? K[48] : K[39];assign K5[2]  = decryptH ? K[12] : K[3] ;assign K5[3]  = decryptH ? K[27] : K[18];assign K5[4]  = decryptH ? K[4]  : K[27];assign K5[5]  = decryptH ? K[39] : K[5] ;assign K5[6]  = decryptH ? K[10] : K[33];assign K5[7]  = decryptH ? K[53] : K[19];assign K5[8]  = decryptH ? K[32] : K[55];assign K5[9]  = decryptH ? K[55] : K[46];assign K5[10] = decryptH ? K[17] : K[40];assign K5[11] = decryptH ? K[40] : K[6] ;assign K5[12] = decryptH ? K[20] : K[11];assign K5[13] = decryptH ? K[54] : K[20];assign K5[14] = decryptH ? K[26] : K[17];assign K5[15] = decryptH ? K[34] : K[25];

⌨️ 快捷键说明

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