简单8位CPU设计verilog微处理器,源码/视频

名称:8位CPU设计微处理器

软件:QuartusII

语言:Verilog

代码功能:

    设计一个简单的处理器,可以实现加减法以及简单的逻辑运算。

    设计包括程序计数器电路,指令存储器电路,指令译码器电路(控制器),运算电路,数据存储器(寄存器)电路。

演示视频:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=213

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

代码下载:

8位CPU设计微处理器 软件:QuartusII 语言:Verilog 代码功能: 设计一个简单的处理器,可以实现加减法以及简单的逻辑运算。 设计包括程序计数器电路,指令存储器电路,指令译码器电路(控制器),运算电路,数据存储器(寄存器)电路。名称:8位CPU设计(代码在文末付费下载)软件:QuartusII语言:Verilog代码功能: 设计一个简单的处理器,可以实现加减法以及简单的逻辑运算。 设计包括程序计数器电路,指令存储器电路,指令译码器电路(控制器),运算电路,数据存储器(寄存器)电路。演示视频:FPGA代码Verilog/VHDL代码资源下载网:www.hdlcode.com部分代码展示`timescale 1nicon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=213

部分代码展示

`timescale 1ns / 1ps
/
//顶层模块:设计包括程序计数器电路,指令存储器电路,指令译码器电路(控制器),运算电路,数据存储器(寄存器)电路
//指令格式:
//-----------------------
//opcode | rs | rt | rd |
//-----------------------
//15-12   11-8  7-4  3-0
//
//操作方式如下:
//ADD R1,R2,R3  
//  => R3 = R1 + R2;
//SUB与ADD一致
//
//INC:
//INC R1,0,R1
// => R1 = R1 +1;
//
//DEC,R1,0,R1
// => R1 = R1 -1;
module cpu(input wire clk,input wire rst_n, output [15:0] alu_Res );
wire [15:0] inst;
wire [15:0] PC;
wire [3:0] Opcode;
wire [3:0] aluOp;
wire [15:0] imm;
wire [3:0] Addr1,Addr2,Addr3;
wire [15:0] Write_data;
wire [15:0] Read_data1,Read_data2;
wire [15:0] aluRes;
wire [15:0] input1,input2;
wire writereg;
assign Opcode = inst[15:12];  //操作码为指令的高四位
assign Addr1 = inst[11:8];//操作数1地址
assign Addr2 = inst[ 7:4];//操作数2地址
assign Addr3 = inst[ 3:0];//目的寄存器地址
assign Write_data = aluRes;  
assign input1 = Read_data1;
assign input2 = Read_data2;
assign alu_Res=aluRes;
//指令存储器例化    
im u_im(.Addr(PC),.inst(inst)
);  
//指令译码器例化
ctr u_ctr(.Opcode(Opcode),.aluOp(aluOp),.writereg(writereg)
);
//数据存储器例化
rf u_rf(.clk(clk),.rst_n(rst_n),.Addr1(Addr1),.Addr2(Addr2),.Addr3(Addr3),.Write_data(Write_data),.writereg(writereg),.Read_data1(Read_data1),.Read_data2(Read_data2)
);
//程序计数器电路例化  
pc u_pc(.clk(clk),.rst_n(rst_n),.current_pc(PC)
);  
//运算电路例化
alu u_alu(.aluOp(aluOp),.input1(input1),.input2(input2), .aluRes(aluRes),.Zero(Zero)
);endmodule

设计文档:

设计文档.doc

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

顶层仿真图

//微程序内容如下:

//2101  # INC R1   结果:R1 =1

//2101  # INC R1   结果:R1 =2

//2101  # INC R1   结果:R1 =3

//2202  # INC R2   结果:R2 =1

//2202  # INC R2   结果:R1 =2

//0123  # ADD R1,R2,R3   结果:R3 =2 + 3 = 5

//1124  # SUB R1,R2,R4   结果:R4 =3 -2 =1

//3303  # DEC R3  结果:R3 =5 -1 = 4

//5345  # OR R3,R4,R5   结果:R5 =4 | 1 = 5

运算器仿真

控制器仿真

指令存储器仿真

程序计数器仿真

寄存器组仿真

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/171123.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化转型系列主题:数据中台知识体系

当前,大部分企业不再建设从源数据采集到分析应用的烟囱式系统,更倾向于数据集中采集、存储,并应用分层建设。这种方式一方面有利于应用系统的快速部署,另一方面也保证了数据的集中管理与运营,体现数据的资产、资源属性…

异常---

目录 认识异常 自定义异常 认识异常 1.异常是什么? 2.异常的代表是谁?分为几类? Error :代表的系统级别错误(属于严重问题),也就是说系统一旦出现问题, s u n 公司会把…

Unsatisfied dependency expressed through bean property ‘sqlSessionTemplate‘;

代码没有问题,但是启动运行报错 2023-10-25 16:59:38.165 INFO 228964 --- [ main] c.h.h.HailiaowenanApplication : Starting HailiaowenanApplication on ganluhua with PID 228964 (D:\ganluhua\code\java\hailiao-java\target\classes …

<多线程章节十> 定时器的使用方法以及定时器的模拟实现

文章目录 💐专栏导读💡Java标准库中的定时器类💡模拟实现定时器 💐专栏导读 本篇文章收录于多线程,也欢迎翻阅博主的其他文章,可能也会让你有不一样的收获😄 🍂JavaSE🌷多…

36基于matlab的对分解层数和惩罚因子进行优化

基于matlab的对分解层数和惩罚因子进行优化。蚁狮优化算法优化VMD,算术优化算法优化VMD,遗传优化算法优化VMD,灰狼优化算法优化VMD,海洋捕食者优化算法优化VMD,粒子群优化VMD,麻雀优化算法优化VMD,鲸鱼优化…

将安全作为首要目标 — Venus 的现状和前景展望

DeFi 的全面爆发将上一轮牛市推向巅峰。在不断的演化中,DeFi 领域也产生了很多新兴的细分领域,比如收益聚合器、合成资产、各种 DeFi 收益工具,以及最近整个市场都在讨论的 RWA 等。 DeFi 在不断进化,不变的是,DEX 和借…

Ocelot简易教程目录

Ocelot简易教程目录 这里写目录标题 Ocelot简易教程目录 Ocelot简易教程(一)之Ocelot是什么Ocelot简易教程(二)之快速开始1Ocelot简易教程(二)之快速开始2Ocelot简易教程(三)之主要特…

Makefile 基础教程:从零开始学习

在软件开发过程中,Makefile是一个非常重要的工具,它可以帮助我们自动构建程序,管理程序依赖关系,提高开发效率。本篇博客将从基础开始,介绍Makefile的相关知识,帮助大家快速掌握Makefile的使用方法 Makefil…

C#使用mysql-connector-net驱动连接mariadb报错

给树莓派用最新的官方OS重刷了一下,并且用apt install mariadb-server装上“mysql”作为我的测试服务器。然后神奇的事情发生了,之前用得好好的程序突然就报错了,经过排查,发现在连接数据库的Open阶段就报错了。写了个最单纯的Con…

应用案例|基于三维机器视觉的机器人引导电动汽车充电头自动插拔应用方案

Part.1 项目背景 人类对减少温室气体排放、提高能源效率以及减少对化石燃料的依赖,加速了电动汽车的普及,然而,电动汽车的充电依然面临一些挑战。传统的电动汽车充电通常需要人工干预,插入和拔出充电头,这不仅可能导致…

学会Docker之——界面化操作(Docker Desktop)

Docker Desktop 是一款用于在桌面环境下开发、构建和容器化应用程序的工具。它适用于 Windows 和 Mac 操作系统,让开发人员可以轻松地在本地环境中创建和运行容器,并与 Docker Hub 和其他容器注册表进行交互。Docker Desktop集成了Docker Engine&#xf…

Dataworks API:调取 MC 项目下所有表单

文章目录 前言Dataworks API 文档解读GetMetaDBTableList 接口文档 API 调试在线调试本地调试运行环境账密问题请求数据进一步处理 小结 前言 最近,我需要对公司的数据资产进行梳理,这其中便包括了Dataworks各个项目下的表单。这些表单,作为…

js中的Formdata数据结构

这里写目录标题 一、基本概念二、常用方法1.append(name, value)、set(name, value)2.get()、getAll()3.has(name)4.delete(name)5.keys(),values(),entries() 三、其他细节1.for of遍历2.转为对象3.结合 URLSearchParams 转为queryString 一、基本概念 FormData 提供了一种表…

【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《软件工程》

在软考中软件工程模块主要包含以下考点: 文章目录 软件过程模型🌟🌟🌟🌟逆向工程🌟基于构件的软件工程🌟🌟软件开发与软件设计与维护净室软件工程软件模型软件需求 软件过程模型&am…

learning rate

这里写目录标题 learning rate单一固定(one-size-fits-all)的学习率Model训练到驻点很困难(学习率太大不能收敛,学习率太小收敛太慢) 如何客制化学习率?- 引入参数σσ常见的计算方式 - Root mean square&a…

P1868 饥饿的奶牛

根据题意可以知道是一个动态规划,看完数据范围之后可以知道是一个线性DP。 解决方法有点类似于背包问题,枚举背包的每一个空间。 如果把坐标轴上每个点都看成一个块儿,只需要按顺序求出前 i 个块儿的最大牧草堆数,f[i] 就是前i的…

【wespeaker】模型ECAPA_TDNN介绍

本次主要介绍开源项目wespeaker模型介绍 1. 模型超参数 model_args: feat_dim: 80 embed_dim: 192 pooling_func: “ASTP” projection_args: project_type: “softmax” # add_margin, arc_margin, sphere, softmax scale: 32.0 easy_margin: False 2. 模型结构 2.1 Layer…

【Javascript】ajax(阿甲克斯)

目录 什么是ajax? 同步与异步 原理 注意 写一个ajax请求 创建ajax对象 设置请求方式和地址 发送请求 设置响应HTTP请求状态变化的函数 什么是ajax? 是基于javascript的一种用于创建快速动态网页的技术,是一种在无需重新加载整个网页的情况下&#xff0c…

一个Entity Framework Core的性能优化案例

概要 本文提供一个EF Core的优化案例,主要介绍一些EF Core常用的优化方法,以及在优化过程中,出现性能反复的时候的解决方法,并澄清一些对优化概念的误解,例如AsNoTracking并不包治百病。 本文使用的是Dotnet 6.0和EF…

HarmonyOS鸿蒙原生应用开发设计- 流转图标

HarmonyOS设计文档中,为大家提供了独特的流转图标,开发者可以根据需要直接引用。 开发者直接使用官方提供的流转图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的图标侵权意外情况等,减…