简单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.mzph.cn/news/119747.shtml

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

相关文章

Java Boolean类,Java Character类,Java Number类

Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类的对象只包含一个类型为 boolean 的字段。此外,此类还为 boolean 和 String 的相互转换提供了很多方法,并提供了处理 boolean 时非常有用的其他一些常用方法。 Boolean 类的构造方…

nginx浏览器缓存和上流缓存expires指令_nginx配置HTTPS

1.nginx控制浏览器缓存是针对于静态资源[js,css,图片等] 1.1 expires指令 location /static {alias/home/imooc;#设置浏览器缓存10s过期expires 10s;#设置浏览器缓存时间晚上22:30分过期expires @22h30m;#设置浏览器缓存1小时候过期expires -1h;#设置浏览器不缓存expires …

在python里如何实现switch函数的功能

在许多编程语言中,包括Python,都提供了switch语句或类似的功能来根据不同的条件执行不同的代码块。然而,Python本身并没有内置的switch语句,但是您可以使用其他方式来实现类似的功能。下面是一种常见的方法: 使用if-e…

Java零基础入门-赋值运算符

前言 Java是一门广泛被应用的编程语言,它被用于开发各种类型的应用程序,从桌面应用程序到企业级后端系统。对于零基础的人来说,学习Java可能会感到有些困难。本文将帮助那些没有编程经验的人了解Java的赋值运算符。 摘要 本文将介绍Java中…

NSSCTF做题第9页(2)

[SWPUCTF 2022 新生赛]ez_1zpop <?php error_reporting(0); class dxg { function fmm() { return "nonono"; } } class lt { public $impohi; public $md51weclome; public $md52to NSS; function __construct() { $this-&…

EF Core中带过滤器参数的Include方法

概要 本文主要介绍EF Core 5.0中一个新特性&#xff0c;就是Include方法支持带过滤器的委托参数&#xff0c;并且说明一下该特性在实际使用中的一个大坑&#xff0c;希望读者在未来的开发中避免踩坑。 本文使用的是Dotnet 6.0和EF Core 7.0。 代码和实现 案例介绍 本文主要…

springboot + redis实现签到与统计功能

在很多项目中都会有签到与统计功能&#xff0c;最容易想到的方案是创建一个签到表来记录每个用户的签到记录&#xff0c;比如设计一个mysql数据库表&#xff1a; CREATE TABLE tb_sign id bigint(20) unsigned NOT NULL AUTOINCREMENT COMMENT 主键, user_id bigint(20) unsig…

从零开始的C++(十二)

长风破浪会有时&#xff0c;直挂云帆济沧海。 List&#xff1a; 链式结构&#xff0c;类似带头双向循环链表。 常见成员函数&#xff1a; push_back()&#xff1a;尾插 pop_back(&#xff09;&#xff1a;尾删 push_front()&#xff1a;头插 pop_front()&#…

【Java技术专题】「入门到精通系列教程」深入探索Java特性中并发编程体系的原理和实战开发指南( 实现可伸缩IO专题)— 上

深入探索Java特性中并发编程体系的原理和实战开发指南&#xff08; 实现可伸缩IO专题&#xff09; 总体内容概览可扩展的网络服务分布式对象传统的阻塞式网络服务每个请求或连接可以在独立的线程中进行处理Server服务处理请求类Handler处理逻辑类优点缺点 可扩展性目标平稳降级…

MySQL Join 类型

文章目录 1 Join 类型有哪些2 Inner Join3 Left Join4 Right Join5 Full Join 1 Join 类型有哪些 SQL Join 类型的区别 Inner Join: 左,右表都有的数据Left Join: 左表返回所有的行, 右表没有的补充为 NULLRight Loin: 右表返回所有的行, 左表没有的补充为 NULLFull Outer J…

Excel多线程导入数据库

文章目录 Excel多线程导入数据库1. CountDownLatch2.多线程导入数据库 Excel多线程导入数据库 书接上文 Excel20w数据5s导入 1. CountDownLatch CountDownLatch 维护了一个计数器&#xff0c;初始值为指定的数量。当一个或多个线程调用 await() 方法时&#xff0c;它们会被阻…

【flink sql table api】时间属性的指定与使用注意事项

文章目录 一. 时间属性介绍二. Table api指定时间属性三. 处理时间的指定1. 在创建表的 DDL 中定义2. 在 DataStream 到 Table 转换时定义3. 使用 TableSource 定义 四. 事件时间的指定1. 在 DDL 中定义2. 在 DataStream 到 Table 转换时定义3. 使用 TableSource 定义 五. 小结…

力扣每日一题70:爬楼梯

题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 …

redis 配置主从复制,哨兵模式案例

哨兵(Sentinel)模式 1 . 什么是哨兵模式&#xff1f; 反客为主的自动版&#xff0c;能够自动监控master是否发生故障&#xff0c;如果故障了会根据投票数从slave中挑选一个 作为master&#xff0c;其他的slave会自动转向同步新的master&#xff0c;实现故障自动转义 2 . 原理…

简析新能源汽车充电桩设计与应用

叶根胜 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;本文针对新能源汽车充电桩建设工作进行探究&#xff0c;采用案例分析法、文献查阅法&#xff0c;指出了新能源汽车充电桩建设存在的问题&#xff0c;阐述了充电桩建设与优化的对策。研究表明&#xff1a;目前…

php实现防止Struts2框架漏洞中的远程命令执行攻击的代码

使用PHP过滤器 PHP提供了一些内置的过滤器&#xff0c;可以过滤掉一些恶意代码。可以使用以下代码将输入数据进行过滤&#xff1a; ​$input $_POST[input]; $safe_input filter_var($input, FILTER_SANITIZE_STRING); 使用escapeshellcmd()和escapeshellarg() 可以使用PHP…

189. 轮转数组 --力扣 --JAVA

题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 解题思路 通过位移后位置对数组长度的取余来判断元素变换后的位置 代码展示 class Solution {public void rotate(int[] nums, int k) {int size nums.length;int[]…

python 使用json包在json格式字符串和python对象之间的变化

起因&#xff1a;使用python json包时&#xff0c;将键值对均为数字的字典存入txt文件后重新加载进字典后出现“字典key值不唯一”的神奇现象。 相关代码&#xff1a; 字典添加数据部分 def xuhao_chuti(self):rand random.randint(1, 908)if rand in self.memery.keys() an…

element-ui的日历组件el-calendar高度咋调小

最近项目首页有个空余 不知道放啥 打算放个日历card 充充位置&#xff0c; el-calendar日历组件的整体宽度可以用el-row el-col :gutter :span来控制自适应 但是官网文档没说高度咋缩小 细长一条好难看 自己尝试改了改element的样式没整出来 最后照着这位博主的方法改是好使滴…

软考系列(系统架构师)- 2014年系统架构师软考案例分析考点

试题一 软件架构&#xff08;MYC 架构、扩展接口模式&#xff09; MVC架构风格最初是Smalltalk-80中用来构建用户界面时采用的架构设计风格。其中M代表模型&#xff08;Model)&#xff0c;V代表视图&#xff08;View)&#xff0c;C代表控制器&#xff08;Controller)。在该风格…