《计算机组成原理实验》 多周期CPU

2023-11-13

《计算机组成原理实验》 多周期CPU

前言

这是中山大学2018年计算机组成原理实验中多周期CPU的实验报告,仿真与写板的内容暂略,所有源代码(包括写板)已经上传至我的github当中,欢迎大家访问。
github个人主页: https://starashzero.github.io
项目地址: https://github.com/StarashZero/Co-homework

一. 实验目的

  1. 认识和掌握多周期数据通路图的构成、原理及其设计方法;
  2. 掌握多周期CPU的实现方法,代码实现方法;
  3. 编写一个编译器,将MIPS汇编程序编译为二进制机器码;
  4. 掌握多周期CPU的测试方法;
  5. 掌握多周期CPU的实现方法。

二. 实验内容实验的具体内容与要求。
设计一个多周期 CPU,该 CPU 至少能实现以下指令功能操作。指令与格式如下:
==> 算术运算指令

  1. add rd , rs, rt
000000 rs(5 位) rt(5 位) rd(5 位) reserved

功能:rd←rs + rt。reserved 为预留部分,即未用,一般填“0”。
2. sub rd , rs , rt

000001 rs(5 位) rt(5 位) rd(5 位) reserved

功能:rd←rs - rt。
3. addiu rt , rs ,immediate

000010 rs(5 位) rt(5 位) immediate(16 位)

功能:rt←rs + (sign-extend)immediate;immediate 符号扩展再参加“加”运算。

==> 逻辑运算指令
4. andi rt , rs ,immediate

010000 rs(5 位) rt(5 位) immediate(16 位)

功能:rt←rs & (zero-extend)immediate;immediate 做“0”扩展再参加“与”运算。
5. and rd , rs , rt

010001 rs(5 位) rt(5 位) rd(5 位) reserved

功能:rd←rs & rt;逻辑与运算。
6. ori rt , rs ,immediate

010010 rs(5 位) rt(5 位) immediate(16 位)

功能:rt←rs | (zero-extend)immediate;immediate 做“0”扩展再参加“或”运算。
7. xori rt , rs , immediate

010011 rs(5 位) rt(5 位) immediate(16 位)

功能:rt←rs (zero-extend)immediate;immediate 做“0”扩展再参加“异或”运算。

==>移位指令
8. sll rd, rt,sa

011000 未用 rt(5 位) rd(5 位) sa(5 位) reserved

功能:rd<-rt<<(zero-extend)sa,左移 sa 位 ,(zero-extend)sa。

==>比较指令
9. slti rt, rs,immediate 带符号数

100110 rs(5 位) rt(5 位) immediate(16 位)

功能:if (rs< (sign-extend)immediate) rt =1 else rt=0, 具体请看表 2 ALU 运算功能表,带符号。

==> 存储器读/写指令
10. slt rd, rs, rt 带符号

100111 rs(5 位) rt(5 位) rd(5 位) reserved

功能:if (rs<rt) rd =1 else rd=0, 具体请看表 2 ALU 运算功能表,带符号。
11. sw rt ,immediate(rs) 写存储器

110000 rs(5 位) rt(5 位) immediate(16 位)

功能:memory[rs+ (sign-extend)immediate]←rt;immediate 符号扩展再相加。即将rt寄存器的内容保存到rs寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中。
12. lw rt , immediate(rs) 读存储器

110001 rs(5 位) rt(5 位) immediate(16 位)

功能:rt ← memory[rs + (sign-extend)immediate];immediate 符号扩展再相加。
即读取 rs 寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中的数,然后
保存到 rt 寄存器中。

==> 分支指令
13. beq rs,rt,immediate

110100 rs(5 位) rt(5 位) immediate(16 位)

功能:if(rs=rt) pc←pc + 4 + (sign-extend)immediate <<2 else pc ←pc + 4
特别说明:immediate 是从 PC+4 地址开始和转移到的指令之间指令条数。immediate 符号扩展之后左移 2 位再相加。为什么要左移 2 位?由于跳转到的指令地址肯定是 4 的倍数(每条指令占 4 个字节),最低两位是“00”,因此将 immediate 放进指令码中的时候,是右移了 2 位的,也就是以上说的“指令之间指令条数”。
14. bne rs,rt,immediate

110101 rs(5 位) rt(5 位) immediate(16 位)

功能:if(rs!=rt) pc←pc + 4 + (sign-extend)immediate <<2 else pc ←pc + 4
特别说明:与 beq 不同点是,不等时转移,相等时顺序执行。
15. bltz rs,immediate

110110 rs(5 位) 00000 immediate(16 位)

功能:if(rs<$zero) pc←pc + 4 + (sign-extend)immediate <<2 else pc ←pc + 4。

==>跳转指令
16. j addr

111000 addr[27:2]

功能:pc <-{(pc+4)[31:28],addr[27:2],2’b00},无条件跳转。
说明:由于 MIPS32 的指令代码长度占 4 个字节,所以指令地址二进制数最低 2 位均为 0,将指令地址放进指令代码中时,可省掉!这样,除了最高 6 位操作码外,还有 26 位可用于存放地址,事实上,可存放 28 位地址,剩下最高 4 位由 pc+4 最高 4 位拼接上。
17. jr rs

111001 rs(5 位) 未用 未用 reserved

功能:pc <- rs,跳转。
==>调用子程序指令
18. jal addr

111010 addr[27:2]

功能:调用子程序,pc <- {(pc+4)[31:28],addr[27:2],2’b00};$31<-pc+4,返回地址设置;子程序返回,需用指令 jr $31。跳转地址的形成同 j addr 指令。

==> 停机指令
19. halt

111111 00000000000000000000000000(26 位)

功能:停机;不改变 PC 的值,PC 保持不变。

三. 实验原理

简述实验原理和方法,必须有数据通路图及相关图。
多周期 CPU 指的是将整个 CPU 的执行过程分成几个阶段,每个阶段用一个时钟去完成,然后开始下一条指令的执行,而每种指令执行时所用的时钟数不尽相同,这就是所谓的多周期 CPU。CPU 在处理指令时,一般需要经过以下几个阶段:

  1. 取指令(IF):根据程序计数器 pc 中的指令地址,从存储器中取出一条指令,同时, pc 根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入 pc,当然得到的“地址”需要做些变换才送入 pc。
  2. 指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。
  3. 指令执行(EXE):根据指令译码得到的操作控制信号,具体地执行指令动作,然后转移到结果写回状态。
  4. 存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。
  5. 结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。

实验中就按照这五个阶段进行设计,这样一条指令的执行最长需要五个(小)时钟周期才能完成,但具体情况怎样?要根据该条指令的情况而定,有些指令不需要五个时钟周期的,
在这里插入图片描述

MIPS 指令的三种格式:
在这里插入图片描述
其中, op:为操作码;
rs:为第 1 个源操作数寄存器,寄存器地址(编号)是 0000011111,001F;
rt:为第 2 个源操作数寄存器,或目的操作数寄存器,寄存器地址(同上);
rd:为目的操作数寄存器,寄存器地址(同上);
sa:为位移量(shift amt),移位指令用于指定移多少位;funct:为功能码,在寄存器类型指令中(R 类型)用来指定指令的功能;
immediate:为 16 位立即数,用作无符号的逻辑操作数、有符号的算术操作数、数据加载(Load)/数据保存(Store)指令的数据地址字节偏移量和分支指令中相对程序计数器(PC)的有符号偏移量;
address:为地址。
在这里插入图片描述
图 2 多周期 CPU 状态转移图
状态的转移有的是无条件的,例如从 sIF 状态转移到 sID 就是无条件的;有些是有条件的,例如 sEXE 状态之后不止一个状态,到底转向哪个状态由该指令功能,即指令操作码决定。每个状态代表一个时钟周期。
在这里插入图片描述
图 3 多周期 CPU 控制部件的原理结构图
图 3 是多周期 CPU 控制部件的电路结构,三个 D 触发器用于保存当前状态,是时序逻辑电路,RST 用于初始化状态“000“,另外两个部分都是组合逻辑电路,一个用于产生下一个阶段的状态,另一个用于产生每个阶段的控制信号。从图上可看出,下个状态取决于指令操作码和当前状态;而每个阶段的控制信号取决于指令操作码、当前状态和反映运算结果的状态 zero 标志和符号 sign 标志。
在这里插入图片描述
图 4 多周期 CPU 数据通路和控制线路图

图4是一个简单的基本上能够在多周期CPU上完成所要求设计的指令功能的数据通路和必要的控制线路图。其中指令和数据各存储在不同存储器中,即有指令存储器和数据存储器。访问存储器时,先给出内存地址,然后由读或写信号控制操作。对于寄存器组,给出寄存器地址(编号),读操作时不需要时钟信号,输出端就直接输出相应数据;而在写操作时,在 WE 使能信号为 1 时,在时钟边沿触发将数据写入寄存器。图中控制信号功能如表 1 所示,表 2 是 ALU 运算功能表。
特别提示,图上增加 IR 指令寄存器,目的是使指令代码保持稳定,pc 写使能控制信号PCWre,是确保 pc 适时修改,原因都是和多周期工作的 CPU 有关。ADR、BDR、ALUoutDR、DBDR 四个寄存器不需要写使能信号,其作用是切分数据通路,将大组合逻辑切分为若干个小组合逻辑,大延迟变为多个分段小延迟。
表 1 控制信号作用

控制信号名 状态“0” 状态“1”
RST 对于 PC,初始化 PC 为程序首地址 对于 PC,PC 接收下一条指令地址
PCWre PC 不更改,相关指令:halt,另外,除‘000’状态之外,其余状态慎改 PC 的值。 PC 更改,相关指令:除指令 halt 外,另外,在‘000’状态时,修改 PC 的值合适。
ALUSrcA 来自寄存器堆 data1 输出,相关指令:add、sub、addiu、and、andi、 ori、xori、slt、slti、sw、lw、beq、 bne、bltz 来自移位数 sa,同时,进行(zero-extend)sa,即 { {27{1’b0},sa}},相关指令:sll
ALUSrcB 来自寄存器堆 data2 输出,相关指令:add、sub、and、slt、sll、 来自 sign 或 zero 扩展的立即数,相关指令:addiu、andi、ori、xori、slti、beq、bne、bltz lw、sw
DBDataSrc 来自 ALU 运算结果的输出,相关指令:add、sub、addiu、and、andi、 ori、xori、sll、slt、slti 来自数据存储器(Data MEM)的输出,相关指令:lw
RegWre 无写寄存器组寄存器,相关指令: beq、bne、bltz、j、sw、jr、halt 寄存器组寄存器写使能,相关指令:add、sub、addiu、and、andi、ori、 xori、sll、slt、slti、lw、jal
WrRegDSrc 写入寄存器组寄存器的数据来自pc+4(pc4),相关指令:jal,写$31 写入寄存器组寄存器的数据来自 ALU 运算结果或存储器读出的数据,相关指令:add、addiu、sub、and、andi、 ori、xori、sll、slt、slti、lw
InsMemRW 写指令存储器 读指令存储器(Ins. Data)
mRD 存储器输出高阻态 读数据存储器,相关指令:lw
mWR 无操作 写数据存储器,相关指令:sw
IRWre IR(指令寄存器)不更改 IR 寄存器写使能。向指令存储器发出读指令代码后,这个信号也接着发出,在时钟上升沿,IR 接收从指令存储器送来的指令代码。与每条指令都相关。
ExtSel (zero-extend)immediate,相关指令:andi、xori、ori; (sign-extend)immediate,相关指令: addiu、slti、lw、sw、beq、bne、 bltz;
PCSrc[1…0] 00:pc<-pc+4,相关指令:add、addiu、sub、and、andi、ori、xori、 slt、slti、sll、sw、lw、beq(zero=0)、bne(zero=1)、bltz(sign=0);
01:pc<-pc+4+(sign-extend)immediate ×4,相关指令:beq(zero=1)、bne(zero=0)、bltz(sign=1); 10:pc<-rs,相关指令:jr;
11:pc<-{pc[31:28],addr[27:2],2’b00},相关指令:j、jal;
RegDst[1…0] 写寄存器组寄存器的地址,来自:
00:0x1F($31),相关指令:jal,用于保存返回地址($31<-pc+4);
01:rt 字段,相关指令:addiu、andi、ori、xori、slti、lw;
10:rd 字段,相关指令:add、sub、and、slt、sll;
11:未用;

ALUOp[2…0] ALU 8 种运算功能选择(000-111),看功能表
相关部件及引脚说明:

Instruction Memory:指令存储器

  1. Iaddr,指令地址输入端口
  2. DataIn,存储器数据输入端口
  3. DataOut,存储器数据输出端口
  4. RW,指令存储器读写控制信号,为 0 写,为 1 读

Data Memory:数据存储器

  1. Daddr,数据地址输入端口
  2. DataIn,存储器数据输入端口
  3. DataOut,存储器数据输出端口
  4. /RD,数据存储器读控制信号,为 0 读
  5. /WR,数据存储器写控制信号,为 0 写

Register File:寄存器组

  1. Read Reg1,rs 寄存器地址输入端口 Read Reg2,2. rt 寄存器地址输入端口
  2. Write Reg,将数据写入的寄存器,其地址输入端口(rt、rd)
  3. Write Data,写入寄存器的数据输入端口
  4. Read Data1,rs 寄存器数据输出端口 Read Data2,rt 寄存器数据输出端口
  5. WE,写使能信号,为 1 时,在时钟边沿触发写入

IR: 指令寄存器,用于存放正在执行的指令代码

ALU: 算术逻辑单元

  1. result,ALU 运算结果
  2. zero,运算结果标志,结果为 0,则 zero=1;否则 zero=0
  3. sign,运算结果标志,结果最高位为 0,则 sign=0,正数;否则,sign=1,负数

表 2 ALU 运算功能表

ALUOp[2…0] 功能 描述
000 Y = A + B
001 Y = A – B
010 Y = B<<A B 左移 A 位
011 Y = A ∨ B
100 Y = A ∧ B
101 Y=(A<B)?1: 0 比较 A<B 不带符号
110 Y=(((A<B)&&(A[31] == B[31])) ||((A[31]==1&& B[31] == 0))) ? 1:0 比较 A<B 带符号
111 Y = A ⊕ B 异或

四. 实验器材

电脑一台,Xilinx Vivado 软件一套,Basys3板一块。

五. 实验过程与结果

  1. 简易MIPS编译器
    实现MIPS首先我将所有的指令按R,I,J型进行分类,方便主程序进行后续的判断和读取
vector<string> rIns = {
   "add","sub","and","slt","sll","jr"};
vector<string> iIns = {
   "addiu","andi","ori","xori","slti","sw","lw","beq","bne","bltz"};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《计算机组成原理实验》 多周期CPU 的相关文章

  • 计算机指令——从纸带说起

    前言 其实很多时候我都会感叹计算机的伟大 通过一个个电路就完成了如今各种系统 通过各种各样的语言就能够指挥设备完成不同的动作 当写下第一个hellow world的时候我就在想他什么怎么出现 今天搞明白其中的原理 我在这和大家分享 打孔卡
  • 保研之路——中山大学数据科学与计算机学院直硕夏令营

    中山大学数据科学与计算机学院直硕夏令营 个人情况 高校复试参与情况 中山大学数据科学与计算机学院直硕 7 14 7 20 结语 嗯 抱着不白花这么多路费住宿费的初衷准备写一个保研经验贴 希望学弟学妹少花点钱吧orz 我的战术大概是只要学校给
  • 2021-07-31

    2周目总结 7 19 7 25 无事 打牌 7 26 8 1 河南加油 无事打牌 我似乎忘了什么 哦 还有作业没弄 作业qaq 正在补习ing
  • 补码除法运算(加减交替法)

    x 补 00 1000 除数y 补 11 0101 两个数是异号 因此使用x 补 y 补 11 1101 11 1101继续与y 补 对比 发现是同号 商上1 余数11 1101向左移动一位 再加上 y 补 结果为00 0101 余数00
  • 【计算机组成原理】——原码,反码,补码,移码怎样计算

    机器数与真值 把符号 数字化 的数称为机器数 而把带 或 的数称为真值 正负号用二进制的0 1表示 0 1 x 001 机器数 第一位表示符号 x 1 x 101 真值 直接用 表示 x 5 原码 反码 补码 移码的计算 正数的原码 反码
  • 爬取湖北师范大学官网新闻信息

    爬虫 内容 要求 分析 爬取摸个面板 部分代码 写入CSV文件的方法 综合代码 内容 要求 爬取湖北师范大学校园官网新闻 将其标题 内容 来源和发布时间写入CSV文件中 分析 湖北师范大学校园官网新闻网页 由于刚开始爬取可以根据其模块将其慢
  • 利用Sql Server代理中的作业实现数据库的自动备份

    1 在Sql server代理中新建作业 2 填写作业名称 3 新建步骤 4 填写步骤名称 选择类型为T Sql脚本 在命令中输入操作脚本 以数据库databaseA 为例 脚本内容如下 DECLARE filename VARCHAR 2
  • # HTB-Tier2- Vaccine

    HTB Tier2 Vaccine Web Network Vulnerability Assessment Databases Injection Custom Applications Protocols Source Code Ana
  • 变量那些事

    什么是变量 变数或变量 是指没有固定的值 可以改变的数 变量以非数字的符号来表达 一般用拉丁字母 变量是常数的相反 变量的用处在于能一般化描述指令的方式 结果只能使用真实的值 指令只能应用于某些情况下 变量能够作为某特定种类的值中任何一个的
  • python对文件的操作(一)序列化和反序列化

    1 文件操作 1 1 文件操作的流程 1 打开文件 得到文件句柄并赋值给变量 2 通过句柄对文件进行操作 3 关闭文件 1 2 从文件中读取数据 要使用文件中的信息 首先需要将信息读取到内存中 为此 那你可以一次读取文件的所有内容 也可以每
  • windows操作系统蓝屏错误对照表

    windows操作系统蓝屏错误对照表
  • ComSec HW6 Hash

    11 1 安全 Hash 函数需要具有那些特性 H能用于任何大小的数据分组 H产生定长输出 对任意给定的x H x 要相对易于计算 使得软硬件实现都实际可行 单向性 对任意给定的码y 寻求x使得H x y在计算上不可行 弱抗碰撞性 任意给定
  • 【计算机组成原理】实验4:存储器读写实验

    实验内容 一 实验原理 存储器是计算机的存储部件 用于存放程序和数据 存储器是计算机信息存储的核心 是计算机必不可少的部件之一 计算机就是按存放在存储器中的程序自动有序不间断地进行工作 本系统从提高存储器存储信息效率的角度设计数据通路 按现
  • 【计组笔记-5】详细测试c++中类型转换的溢出截断处理

    计组笔记 5 详细测试c 中类型转换的溢出截断处理 1 将小数赋值给float 2 将整数赋值给float 3 将整数赋值给int 3 1 算术溢出 3 2 非算术溢出 等于32位 3 3 非算术溢出 大于32位 4 将小数赋值给int 5
  • 清华梦的粉碎-写给清华大学的退学申请

    作者 王垠 清华梦的诞生 小时候 妈妈给我一个梦 她指着一个大哥哥的照片对我说 这是爸爸的学生 他考上了清华 大学 他是我们中学的骄傲 长大后 你也要进入清华大学读书 为我们家争光 我不知道清华是什么样子 但是我知道爱迪生和 牛顿 的故事
  • Hadoop命令大全

    Hadoop命令大全 1 列出所有Hadoop Shell支持的命令 bin hadoop fs help 2 显示关于某个命令的详细信息 bin hadoop fs help command name 3 用户可使用以下命令在指定路径下查
  • 2022中山大学计算机技术专硕考研初试、复试经验帖

    2022年中山大学计算机技术专硕考研初试 复试经验帖 个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧 可以帮助节省时间 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 如果觉得有帮助的话可以点个收藏后续会修改和增加内容
  • QQ飞车手游设计分析

    腾讯系竞速手游的逆袭 QQ飞车手游设计分析 前言 这是中山大学数据科学与计算机学院软件工程2019年3D游戏编程与设计的作业1 导语 在中国巨大的游戏市场下 手游战场上的战火从未熄灭 其中以王者荣耀为首的MOBA类手游与以PUBG 现改名和
  • 【计算机组成原理】总线宽度和总线带宽的区别,总线带宽的计算

    总线宽度 总线的宽度 指总线在单位时间内可以传输的数据总数 即平常说的32位 64位 总线宽度 总线位宽 数据线的根数 总线带宽 总线带宽 指总线在单位时间内可以传输的数据总数 等于总线的宽度与工作频率的乘积 通常单位 MB s MBps
  • 【408】计算机学科专业基础 - 计算机组成原理

    一 计算机系统概述 复习提示 本章是组成原理的概述 考查时易针对有关概念或性能指标出选择题 也可能综合后续章节的内容出有关性能分析的综合题 掌握本章的基本概念 是学好后续章节的基础 部分知识点在初学时理解不深刻也无须担忧 相信随着后续章节的

随机推荐

  • python可以做回归分析吗_使用python进行回归分析

    一 概述 1 回归 利用样本 已知数据 产生拟合方程 从而对未知数据进行预测 2 分类线性回归 一元线性 多元线性 逻辑回归 实际上预测的是数据X属于分类Y的概率p 逻辑回归公式由 log p 1 p 0 1X 推导求得 非线性回归 3 求
  • SourceInght And Sublime Text 2 Using Skills

    工欲善其事 必先利其器 Sourceinsight 加入时间 http my oschina net xDreamYY blog 228814 Sourceinsight 加入快捷键 http www cnblogs com wangqig
  • 【Matlab启动报错】无法打开桌面:java.lang.NullPointerException

    今天兴致勃勃地准备跑跑simulink的时候发现matlab 打不开了 因为以后的研究方向几乎不用matlab 所以几个月没碰它了 上网查了有可能是兼容性的问题 但是改成了Vista发现并没有什么用 我接着在网上找到了可能是字体等windo
  • Android与H5交互 -- 点击H5跳转到 Android原生 页面 ,webview与h5(js)交互

    目录标题 Android与H5交互 一 清单文件 增加的配置 二 在你需要跳转的页面 清单文件中加入如下配置 三 整体结构布局如下 四 贴一下html里面的代码吧 五 具体实现如下 Android webview调用JS方法 JS中调用An
  • centos安装docker后,ping不能服务器ip

    工作中碰的问题 记录下解决过程 问题描述 2台内网服务器 A 172 20 72 77 和B 172 17 3 222 在A服务上ping B 安装 docker之前是可以ping通 安装docker之后确ping不通了 查找原因 在安装d
  • Ajax定时调用封装

    var dataUpload ajax请求数据 method function murl mdata method time1 time2 success 首次读取 setTimeout function aJax time1 定时读取函数
  • Vue3.2中使用swiper实现层叠式轮播图

    介绍 在 vue3 中使用 swiper 实现缩略图的轮播图效果 具体如下图所示 代码
  • tensorflow2调用huggingface transformer预训练模型

    tensorflow2调用huggingface transformer预训练模型 一点废话 huggingface简介 传送门 pipline 加载模型 设定训练参数 数据预处理 训练模型 结语 一点废话 好久没有更新过内容了 开工以来就
  • python爬取美女_知乎大神用Python爬取高颜值美女(Python爬虫+人脸检测+颜值检测)...

    import time import os import re import requests from lxml import etree from aip import AipFace 百度云 人脸检测 申请信息 唯一必须填的信息就这三
  • 对List集合进行自定义规则排序

    这次的场景是要对一个List lt 对象 gt 中的某个属性进行自定义排序 废话不多说 直接上代码 首先你要自定义一个排序规则 比如下面这种 public class MySort public static final HashMap
  • 西普部分CTF题目(web)(持续更新)

    1 菊花 题目地址 http www simplexue com ctf examctfdetail 729 点击 我是吊死 进入sim php页面 post参数为id 提示需要net framework 9 9 用burp拦截 修改use
  • JS 实现抛物线动画案例

    相信大家都有浏览过 很多购物网站购物车的添加商品动画 今天 我们就手写一个简单的抛物线动画 先上案例 一 绘制页面 我们这里简单实现 一个按钮 一个购物车图标 样式这里直接跳过 最终dom结构 div class container div
  • eclipse 编译dubbo2.8.4 源码

    第一步 准备工作 下载dubbox的源代码 下载地址 https github com dangdangdotcom dubbox 第二步 编译源代码 maven编译工具 打开CMD命令窗口 切换到dubbox源代码的所在文件夹 E wor
  • Java——数据结构之顺序表

    文章目录 Java 数据结构之顺序表 1 顺序表的简单了解 2 接口的实现 1 创建初始变量 2 打印顺序表 3 添加元素 4 判断是否包含元素 5 查找元素的下标 6 获取 pos 位置的元素 7 更新pos 位置的元素值 8 删除元素
  • pip install报错 [ImportError]: DLL load failed while importing _socket:参数错误

    pip install 时报错 ImportError DLL load failed while importing socket 参数错误 开始以为是虚拟环境的问题 换了虚拟环境还是不行 百度到了解决办法 Win7系统需要安装KB253
  • Spring系列——Spring MVC配置文件

    Spring系列 Spring MVC配置文件 一 前端控制器DispatcherServlet 二 RequestMapping注解 1 使用方法 1 1 标注在方法上 1 2 标注在类上 2 RequestMapping注解的属性 3
  • 机器视觉入门之路(三九--A,霍夫变换(hough transform)寻找直线,c++)

    xy坐标系直线 y kx b 请看图 假定红色线段上的所有样本点 100个 都满足上面的直线方程 a图 也就是说 红色的点 x1 y1 x2 y2 x3 y3 x98 y98 x99 y99 x100 y100 带入方程 只能求出一个k值和
  • Redis入门(一)

    第1章 NoSQL 1 1 NoSQL数据库 1 1 1 NoSQL是什么 1 NoSQL Not Only SQL 意即 不仅仅是SQL 泛指非关系型的数据库 2 NoSQL不拘泥于关系型数据库的设计范式 放弃了通用的技术标准 为某一领域
  • 圆相交 马蹄集

    圆相交 难度 白银 0时间限制 1秒 巴占用内存 64M 输入2个圆的圆心的坐标值 x y 和半径 判断2个圆是否相交 输出YES或者 NO 格式 输入格式 输入整型 空格分隔 每行输入一组信息 输出格式 输出YES或者NO Created
  • 《计算机组成原理实验》 多周期CPU

    计算机组成原理实验 多周期CPU 前言 这是中山大学2018年计算机组成原理实验中多周期CPU的实验报告 仿真与写板的内容暂略 所有源代码 包括写板 已经上传至我的github当中 欢迎大家访问 github个人主页 https stara