My title page contents

单周期处理器的数据路径(datapath)设计VHDL代码VIVADO仿真

名称:单周期处理器的数据路径(datapath)设计VHDL代码VIVADO仿真

软件:VIVADO

语言:VHDL

代码功能:

单周期处理器的数据路径(datapath)

   指令执行通过使用程序计数器向指令存储器提供指令地址来开始。在获取指令后,指令使用的寄存器操作数由该指令的字段指定。一旦获取了寄存器操作数,就可以对其进行操作以计算内存地址(用于加载或存储)、计算算术结果(用于整数算术逻辑指令)或相等性检查(用于分支)。如果指令是算术逻辑指令,则ALU的结果必须写入寄存器。如果操作是加载或存储,则ALU结果用作地址,用于存储寄存器中的值或将内存中的值加载到寄存器中。这个ALU或存储器的结果被写回寄存器堆。连接功能单元的蓝线代表由多个信号组成的总线。箭头用于引导读者了解信息是如何流动的。由于信号线可能交叉,我们通过线交叉处存在的点来明确显示交叉线何时连接。

一些输入(RegWrite、ALUSrc、ALUCC、MemRead、MemWrite、MemtoReg)是由名为“control”的模块导出的控制信号。控制单元应该稍后设计,在这个实验室里,你假设你有所有的控制信号作为输入。

图2显示了单周期处理器的数据路径


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


演示视频:

设计文档:

Datapath程序设计文档.doc

1.工程文件

2.程序文件


程序源文件如下

3.程序运行

4.程序RTL图


5.程序仿真

仿真3us ,如下图,输出18,与testbench要求一致


提供的testbench最终应该输出18


具体仿真图如下




部分代码展示:

----------------------------------------------------------------------------------
-- Company: 
-- Engineer: 
-- 
-- Create Date: 2019/02/13 23:17:30
-- Design Name: 
-- Module Name: Datapath - Behavioral
-- Project Name: 
-- Target Devices: 
-- Tool Versions: 
-- Description: 
-- 
-- Dependencies: 
-- 
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
-- 
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx leaf cells in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity Datapath is
PORT (
clk , reset : IN STD_LOGIC ;
RegWrite , MemtoReg , ALUsrc , MemWrite , MemRead : IN STD_LOGIC ;
ALU_CC : IN STD_LOGIC_VECTOR (3 downto 0);
opcode : OUT STD_LOGIC_VECTOR (6 downto 0);
Funct7 : OUT STD_LOGIC_VECTOR (6 downto 0);
Funct3 : OUT STD_LOGIC_VECTOR (2 downto 0);
Datapath_Result : OUT STD_LOGIC_VECTOR (31 downto 0));
end Datapath;
architecture Behavioral of Datapath is
-- -------------- Component declaration ----------------
Component FlipFlop IS
PORT (
clk , reset : IN STD_LOGIC ;
d : IN STD_LOGIC_VECTOR (7 downto 0);
q : OUT STD_LOGIC_VECTOR (7 downto 0));
end Component ;
Component HA is
PORT (
A , B : IN STD_LOGIC_VECTOR (7 downto 0);
SUM : OUT STD_LOGIC_VECTOR (7 downto 0);
Cout : OUT STD_LOGIC );
end Component ;
Component RegFile IS
PORT (
clk , reset , rg_wrt_en : IN STD_LOGIC ;
rg_wrt_addr : IN STD_LOGIC_VECTOR (4 downto 0);
rg_rd_addr1 , rg_rd_addr2 : IN STD_LOGIC_VECTOR (4 downto 0);
rg_wrt_data : IN STD_LOGIC_VECTOR (31 downto 0);
rg_rd_data1 , rg_rd_data2 : OUT STD_LOGIC_VECTOR (31 downto 0));
end Component ;
Component alu is
  Port (
  a, b : in  std_logic_vector (31 downto 0);
  ALU_Operation  : in  std_logic_vector (3 downto 0);
  Result  : out std_logic_vector (31 downto 0);
  Carry_out, zero, overflow : out std_logic);
end Component ;
Component data_mem is
PORT (
MemRead , MemWrite : IN STD_LOGIC ;
add : IN STD_LOGIC_VECTOR (8 downto 0);
write_data : IN STD_LOGIC_VECTOR (31 downto 0);
read_data : OUT STD_LOGIC_VECTOR (31 downto 0));
end Component ;

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 单周期处理器的数据路径(datapath)设计VHDL代码VIVADO仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

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

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