甚高密度脂蛋白 中的非线性查找表实现

在这个 甚高密度脂蛋白 项目 ,非线性查询表,用于即将到来的哈希函数 协处理器 在中实现 甚高密度脂蛋白 .

哈希算法中使用的非线性运算利用 并行4位非线性运算,其中输入半字节(4位)映射到另一个非线性4位值。 

非线性查找操作单元如下图所示:
 甚高密度脂蛋白 中的非线性查找表实现

查找表实现的详细信息如下:

 甚高密度脂蛋白 中的非线性查找表实现

甚高密度脂蛋白 代码 对于非线性查找表的实现:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- fpga4student.com: FPGA projects, Verilog projects,   甚高密度脂蛋白 项目 
--   甚高密度脂蛋白 项目 :  甚高密度脂蛋白  implementation of Lookup Table
---------------------------------------------------
--  甚高密度脂蛋白 中的非线性查找表实现--
---------------------------------------------------
entity non_linear_lookup is
port (  LUTIN: in std_logic_vector(7 downto 0);
   LUTOUT: out std_logic_vector(7 downto 0)
 );
end non_linear_lookup;

architecture Behavioral of non_linear_lookup is
signal MSN_in,LSN_in,MSN_out,LSN_out: std_logic_vector(3 downto 0);
begin
MSN_in <= LUTIN(7 downto 4);
LSN_in <= LUTIN(3 downto 0);
SBOX_1: process(MSN_in) begin
case(MSN_in) is
 when "0000" => MSN_out <= "0001";
 when "0001" => MSN_out <= "1011";
 when "0010" => MSN_out <= "1001";
 when "0011" => MSN_out <= "1100";
 when "0100" => MSN_out <= "1101";
 when "0101" => MSN_out <= "0110";
 when "0110" => MSN_out <= "1111";
 when "0111" => MSN_out <= "0011";
 when "1000" => MSN_out <= "1110";
 when "1001" => MSN_out <= "1000";
 when "1010" => MSN_out <= "0111";
 when "1011" => MSN_out <= "0100";
 when "1100" => MSN_out <= "1010";
 when "1101" => MSN_out <= "0010";
 when "1110" => MSN_out <= "0101";
 when "1111" => MSN_out <= "0000";
 when others => MSN_out <= "0000";
end case;
end process;
SBOX_2: process(LSN_in) begin
case(LSN_in) is
 when "0000" => LSN_out <= "1111";
 when "0001" => LSN_out <= "0000";
 when "0010" => LSN_out <= "1101";
 when "0011" => LSN_out <= "0111";
 when "0100" => LSN_out <= "1011";
 when "0101" => LSN_out <= "1110";
 when "0110" => LSN_out <= "0101";
 when "0111" => LSN_out <= "1010";
 when "1000" => LSN_out <= "1001";
 when "1001" => LSN_out <= "0010";
 when "1010" => LSN_out <= "1100";
 when "1011" => LSN_out <= "0001";
 when "1100" => LSN_out <= "0011";
 when "1101" => LSN_out <= "0100";
 when "1110" => LSN_out <= "1000";
 when "1111" => LSN_out <= "0110";
 when others => LSN_out <= "0000";
end case;
end process;
LUTOUT <= MSN_out & LSN_out;
end Behavioral;

用于非线性查找表实现的澳门在线 Testbench代码:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.all;
-- fpga4student.com: FPGA projects, Verilog projects,   甚高密度脂蛋白 项目 
--   甚高密度脂蛋白 项目 :  甚高密度脂蛋白  implementation of Lookup Table
-- Testbench   甚高密度脂蛋白 代码  for Lookup Table Implementation
ENTITY tb_lookuptable IS
END tb_lookuptable;
 
ARCHITECTURE behavior OF tb_lookuptable IS 
 
    -- Component Declaration for Lookup Table Implementation in  甚高密度脂蛋白 
 
    COMPONENT non_linear_lookup
    PORT(
         LUTIN : IN  std_logic_vector(7 downto 0);
         LUTOUT : OUT  std_logic_vector(7 downto 0)
        );
    END COMPONENT;
    

   --Inputs
   signal LUTIN : std_logic_vector(7 downto 0) := (others => '0');

  --Outputs
   signal LUTOUT : std_logic_vector(7 downto 0);
 signal i: integer;
 
BEGIN
 
 -- Instantiate the Lookup Table Implementation
   uut: non_linear_lookup PORT MAP (
          LUTIN => LUTIN,
          LUTOUT => LUTOUT
        );

   stim_proc: process
   begin  
  LUTIN <= x"00";
  -- initialize 4-bit input data in  甚高密度脂蛋白  testbench
      for i in 0 to 15 loop
   LUTIN <= std_logic_vector(to_unsigned(i, 8));
  wait for 100 ns; 
  end loop;
      wait;
   end process;

END;

甚高密度脂蛋白 中非线性查找表的仿真波形:

 甚高密度脂蛋白 中的非线性查找表实现
推荐的 甚高密度脂蛋白 项目 :
1. 什么是FPGA? 甚高密度脂蛋白 如何在FPGA上工作
2. FIFO存储器的澳门在线代码
3.  FIR滤波器的澳门在线代码
4. 8位微控制器的澳门在线代码
5. 矩阵乘法的澳门在线代码
6. 开关尾环计数器的澳门在线代码
7. FPGA上数字闹钟的澳门在线代码
8. 8位比较器的澳门在线代码
9. 如何使用澳门在线将文本文件加载到FPGA中
10。  D触发器的澳门在线代码
11。   完整加法器的澳门在线代码
12  具有可变占空比的澳门在线中的PWM发生器
13   ALU的澳门在线代码
14。  带测试平台的计数器的澳门在线代码
15   16位ALU的澳门在线代码
16。   甚高密度脂蛋白 中的移位器设计
17。   甚高密度脂蛋白 中的非线性查找表实现
18岁   甚高密度脂蛋白 中的密码协处理器设计

19   Verilog和澳门在线 :通过示例解释
20  FPGA上时钟分频器的澳门在线代码
FPGA Verilog  甚高密度脂蛋白 课程

没意见:

发表评论

热门FPGA项目