比较器的VHDL代码

这个 甚高密度脂蛋白 项目 展示了用于比较器的简单VHDL代码,该代码在Verilog中设计和实现 之前 。 充分 甚高密度脂蛋白 提供了用于比较器的测试代码和测试平台。

的设计 比较器 已经基于真值表和K-map 这里 。有两个2位输入A和B进行比较。三个输出信号为A_less_B(如果A为1<B,否则为0),A_equal_B(如果A = B则为1,否则为0)和A_greater_B(如果A则为1)>B,否则为0)。从K-Map表获得的输出最小化表达式用于比较器的VHDL编码。

比较器的VHDL代码

比较器的VHDL代码:

-- fpga4student.com: FPGA projects, Verilog projects,   甚高密度脂蛋白 项目  
--   甚高密度脂蛋白 项目 : 比较器的VHDL代码 
-- A  比较器  with 2 2-bit input A and B, and three outputs 
-- A less than B, A equal B, and A greater than B
-- The  比较器  is designed by using truth table, K-Map. 
-- The final output expressions are used for  甚高密度脂蛋白  coding
library IEEE;
use IEEE.std_logic_1164.all;
entity  比较器 _VHDL is
port (
 A,B: in std_logic_vector(1 downto 0); -- two inputs for comparison
 A_less_B: out std_logic; -- '1' if A < B else '0'
 A_equal_B: out std_logic;-- '1' if A = B else '0'
 A_greater_B: out std_logic-- '1' if A > B else '0'
 );
end  比较器 _VHDL;
architecture  比较器 _structural of  比较器 _VHDL is
signal tmp1,tmp2,tmp3,tmp4,tmp5, tmp6, tmp7, tmp8: std_logic; 
-- temporary signals 
begin
 -- A_equal_B combinational logic circuit
 tmp1 <= A(1) xnor B(1);
 tmp2 <= A(0) xnor B(0);
 A_equal_B <= tmp1 and tmp2;
 -- A_less_B combinational logic circuit
 tmp3 <= (not A(0)) and (not A(1)) and B(0);
 tmp4 <= (not A(1)) and B(1);
 tmp5 <= (not A(0)) and B(1) and B(0);
 A_less_B <= tmp3 or tmp4 or tmp5;
 -- A_greater_B combinational logic circuit
 tmp6 <= (not B(0)) and (not B(1)) and A(0);
 tmp7 <= (not B(1)) and A(1);
 tmp8 <= (not B(0)) and A(1) and A(0);
 A_greater_B <= tmp6 or tmp7 or tmp8;
end  比较器 _structural;

比较器的VHDL测试平台代码:

-- fpga4student.com: FPGA projects, Verilog projects,   甚高密度脂蛋白 项目  
--   甚高密度脂蛋白 项目 : 比较器的VHDL代码 
-- Testbench  甚高密度脂蛋白  code for  比较器 
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
use ieee.numeric_std.all; 
ENTITY tb_comparator_VHDL IS
END tb_comparator_VHDL;
 
ARCHITECTURE behavior OF tb_comparator_VHDL IS 
 
    -- Component Declaration for the  比较器  in  甚高密度脂蛋白 
 
    COMPONENT  比较器 _VHDL
    PORT(
         A : IN  std_logic_vector(1 downto 0);
         B : IN  std_logic_vector(1 downto 0);
         A_less_B : OUT  std_logic;
         A_equal_B : OUT  std_logic;
         A_greater_B : OUT  std_logic
        );
    END COMPONENT;
   --Inputs
   signal A : std_logic_vector(1 downto 0) := (others => '0');
   signal B : std_logic_vector(1 downto 0) := (others => '0');
  --Outputs
   signal A_less_B : std_logic;
   signal A_equal_B : std_logic;
   signal A_greater_B : std_logic;
BEGIN
 
 -- Instantiate the  比较器  in  甚高密度脂蛋白 
   uut:  比较器 _VHDL PORT MAP (
          A => A,
          B => B,
          A_less_B => A_less_B,
          A_equal_B => A_equal_B,
          A_greater_B => A_greater_B
        );

   -- Stimulus process
   stim_proc: process
   begin 
  -- create test cases for A_less_B
  for i in 0 to 3 loop 
           A <= std_logic_vector(to_unsigned(i,2));  
           B <= std_logic_vector(to_unsigned(i+1,2));  
           wait for 20 ns; 
      end loop;
  -- create test cases for A_greater_B
   for i in 0 to 3 loop 
           A <= std_logic_vector(to_unsigned(i+1,2));  
           B <= std_logic_vector(to_unsigned(i,2));  
           wait for 20 ns; 
      end loop;
  -- create test cases for A_equal_B
  for i in 0 to 3 loop 
           A <= std_logic_vector(to_unsigned(i,2));  
           B <= std_logic_vector(to_unsigned(i,2));   
           wait for 20 ns; 
      end loop;
      wait;
   end process;

END;

甚高密度脂蛋白 中比较器的仿真波形:

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

没意见:

发表评论

热门FPGA项目