能够计算A平方减1的算术单元设计VHDL代码Quartus仿真

名称:能够计算A平方减1的算术单元设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

该项目的目标是设计一个能够计算A平方减1的算术单元。该单元将接收操作数A8位有符号数。LOAD引脚处的10转换将操作数锁存到内部寄存器RA中。该单元在16位寄存器RZ输出端口中输出结果。每次计算都以LOAD信号开始,以END_FLAG信号结束。


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


设计文档:

arithmetic_unit仿真文档.doc

1.工程文件

2.程序运行

3.程序RTL图


4.Testbench







5.时序仿真图

5.1 整体仿真图

A为输入,Z为输出,可见Z=A2-1;图中-100的结果未计算完成时CLR清零信号拉高,故输出为0。


5.2 分模块仿真

下降沿检测模块仿真:检测LOAD的下降沿


取绝对值模块仿真:


平方减一模块仿真,CLR信号清1,减一后输出为0


部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
ENTITY arithmetic_unit IS
   PORT (
      CLK       : IN STD_LOGIC;
      A         : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
      CLR       : IN STD_LOGIC;
      LOAD      : IN STD_LOGIC;
      
      Z         : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
      END_FLAG  : OUT STD_LOGIC
   );
END arithmetic_unit;
ARCHITECTURE arithmetic_u OF arithmetic_unit IS
--例化下降沿检测模块
component down_delect IS
   PORT (
      CLK        : IN STD_LOGIC;
      LOAD       : IN STD_LOGIC;
      LOAD_down  : OUT STD_LOGIC
   );
END component;
--例化求平均值值-1模块
component square IS
   PORT (
      CLK               : IN STD_LOGIC;
      CLR               : IN STD_LOGIC;
      LOAD_down         : IN STD_LOGIC;
      unsigned_operand  : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
      END_FLAG          : OUT STD_LOGIC;
      square_out        : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
   );
END component;
--例化取绝对中模块
component mod_operand IS
   PORT (
      operand        : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
      Model_operand  : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
   );
END component;
   
   SIGNAL LOAD_down      : STD_LOGIC;
   
   SIGNAL RA             : STD_LOGIC_VECTOR(15 DOWNTO 0);
   
   SIGNAL Model_operand  : STD_LOGIC_VECTOR(15 DOWNTO 0);
   
   -- Declare intermediate signals for referenced outputs
   SIGNAL Z_signal        : STD_LOGIC_VECTOR(31 DOWNTO 0);
   SIGNAL END_FLAG_signal : STD_LOGIC;
BEGIN
   -- Drive referenced outputs
   Z <= Z_signal;
   END_FLAG <= END_FLAG_signal;
   
--调用检测下降沿模块,因为要求在LOAD的下降沿加载数据,故需要检测下降沿
   downdelect : down_delect
      PORT MAP (
         clk        => CLK,
         load       => LOAD,
         load_down  => LOAD_down
      );
--在LOAD下降沿时加载A到RA模块
   PROCESS (CLK)
   BEGIN
      IF (CLK'EVENT AND CLK = '1') THEN
         IF (LOAD_down = '1') THEN--下降沿信号为1
            RA <= A;
         ELSE
            RA <= RA;
         END IF;
      END IF;
   END PROCESS;
   
   
 --调用取绝对值模块,将将负数转换为其绝对值  
   Model : mod_operand
      PORT MAP (
         operand        => RA,
         model_operand  => Model_operand
      );

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 能够计算A平方减1的算术单元设计VHDL代码Quartus仿真

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员