您当前的位置:首页 >> 家居图库

大神教你制做一个简单的16位CPU

2023-04-30 12:16:11

个小数内置,没比上就会的电容大区(显然。。。。难道你想用小数内置就让沙法内置的基本功能?不意味著吧!当然,沙上一个负有数的补码不太意味著就是乘上 一个有数,但是这里可先不顾虑这种关键回答题),多了都由MD内置,愈来愈少了都由D缓冲内置。总的来说是,竞争者还是明显的(两块电容板和旁边电容板的差别)。

而sel接收机就是用来自由选择的(0是递增,1是递减)。相关评论:CPU如何顺利完成有数字沙法。

如果我们把sel接收机看就让“解决问题程序”的话,这个电容就像一个“CPU”能根据“解决问题程序”督导各不相同的“加载”,也许,通过“解决问题程序”(sel接收机),这个电容就都能发挥作用则否。

根据上就会的结论,我认为(仅仅是个人认为啊~):解决问题程序就是涡轮程序电容的衔接!

而CPU的基本哲研不读思想,我认为就是这样的。

年中我们就分析CPU的构造和各个装配,然后发挥作用这个CPU。

什么是单心率CPU,什么是多心率CPU,什么是RISC,什么是CISC

首可先大家得有步进的概念:这个关键回答题不好解释 啊。。。。。。可以解不读为家;还有的机壳钟,上上电池此后就就会滴答滴答丢下,而它“滴答滴答”的速度快就是频率,滴答一下用的短时间就是心率,而人的管理工作,午饭, 吃饭和研不读习SM都是按照步进的指引来顺利完成的(熬夜的网瘾愈来愈少年不输),;也,步进接收机都是由晶体振荡内置导致的,0101心率性的接收机(低电平和高电平)。

有数字电容都必需一个“步进”来涡轮,就像合奏交响乐的时候必需一个指挥家在以前面指挥一样,所有的人愈来愈就会跟着指挥的拍子来合奏,就像有数字电容之以前所有的装配愈来愈就会跟着步进曲式管理工作一样。

如下是一个全部都是然的步进接收机:(注意是全部都是然的)。

当然,仅仅的步进接收机意味著远未这么全部都是然,意味著上升沿是斜的,而且分之二空比也意味著不是50%,有抖动,有偏移(相对来说于两个晶体管),意味著因为导线的寄生电容效应变得丢下形。

上就会那段如果没听懂也没关系~~~此番就是告诉你,仅仅的步进接收机测出有来肯定没这么另行标准。

而 cpu的晶体管,是外频与RF的乘积(cpu似乎怎么输频率,回事这个我也不太确切呵呵),因为cpu是通过直接的晶振导致一个步进接收机,然后先通过内部 的电容(锁相环),RF至必需的频率。当然,有人回答,为什么要这么麻烦呢?直接在电容外边就让个步进晶振能导致那么高的步进接收机就可以了嘛,这个是可以的, 在某些简单的系统就会上(事例如51单片媛)就是这样的,但是数值媛的cpu相比较相比较简单,因为一些原因所以必需要就让到cpu内。

前面简单说是一下CPU的两种解决问题程序集:CISC和RISC。

说是下我的意见(个人意见,如有误判还劝绝技方是):

RISC是Reduced Instruction Set Computer,精简解决问题程序集数值机系统就会,类似于于事事例是MIPS晶片。

CISC 是Complex Instruction Set Compute,相比较简单解决问题程序集数值机系统就会,类似于于事事例是x86第四部晶片(当然原是今的x86解决问题程序还是当初cisc的解决问题程序,但是仅仅晶片的构造都早已演变成了 risc构造了,risc的构造发挥作用流水线等特性相比较容易,在数值机系统就会以前的你如果用的是intel某第四部的晶片,则它用到的解决问题程序集看上去还是像cisc的 解决问题程序,但是严格来说是你的cpu的构造早已是risc的了)。笔记本电脑科技必需研不读的外面不太意味著非常多,千万不要研不读错了路线和内容,导致加班费要不上去!无偿分享大家一个档案包,差不多150多G。;还有研不读习内容、面经、项目都相比较另行也相比较全部都是!某鱼上买估计至愈来愈少要好几十。页面这里找小助理0元领取:沙微信领取档案

一般CISC的晶片必需用微解决问题程序配合开始运行,而RISC全部都是部是通过硬连到发挥作用的, 也就是说是,当cisc的晶片在督导你的解决问题程序以前,还得可先从另外一个rom;还有抽出有一些有样本来“指导”晶片怎么解决问题你的命令,所以cisc效率相比较低,而 risc是完全部都是通过装配和装配彼此间的联接发挥作用某种基本功能,极大的提高了高效率,而且为流水线构造的出有原是提供了根基。cisc的缓存有数目较愈来愈少,解决问题程序都能实 原是一些相比较独有的基本功能,事例如8086的一些缓存:

ax,bx,cx,dx,si,di等;段缓存有:cs,ds,es,ss等。相对来说的解决问题程序基本功能相比较独有,事例如xlat将bx之以前的最大值作为基URL,al之以前的最大值作为偏移,在磁盘之以前SRAM到的有样本送去去al当之以前(以ds为段缓存)

而risc的晶片则国际另行标准化组织缓存相比较多,而解决问题程序的基本功能可以稍较弱一点,事例如:

以nios笔记本电脑晶片来暗示,nios晶片有32个国际另行标准化组织缓存(r0~r31),而解决问题程序基本功能相对来说x86的弱一些,而且x86顺利完成磁盘访回答期间是直接用到mov解决问题程序,nios晶片不读磁盘用的是load,所写磁盘用的是store,

二者自发之以前断的方式也不一样,举一个类似于于的事事例,x86的晶片将之以前断向量备注敲打在了磁盘的最低URL(0-1023,每个之以前断向量分之二四个字节),为数256 个之以前断(以实种系统的8086举事例)自发之以前断时,将之以前断号完全部都是相同的URL上的cs和ip的最大值放于到cs和ip缓存而将原来的URL保存,并且保存正常缓存然后 重回之以前断解决问题,而risc则享有一个都由的之以前断自发函有数,这个函有数就会根据之以前断号找到解决问题程序向系统就会注册的函有数的URL,并且调用这个函有数。;也而是用的 cisc解决问题程序的长度是不定的,事例如x86的xor ax,bx完全部都是相同执行期是0x31d8、而push ax是0x50、pop cx是0x59。而risc的解决问题程序确是定长的,事例如32位。

相关评论引荐:CPU怎么识别我们所写的编译内置?如果还有不确切的。。。。。另行百度,要解不读这些概念必需一点短时间。

一个CPU的基本构造以及必要性组件

这个事事例提到自DE2开发设计板组件带的光盘上的Lab Exercise 9,我们从由此可知之以前可以认出,一个CPU还包括了国际另行标准化组织缓存组R0~R7,一个ALU(演输范式短剧),解决问题程序缓存IR,操控内置(一般这以外是一个有限正常机或 者是用微解决问题程序发挥作用),还有就是有样本通路(由此可知之以前的连到)。当然根本的CPU不意味著只还包括这么一点点组件,这是一个基本概念CPU,也就是说是只是暗示CPU的原 理,根本相比较简单的CPU要关的到很多相比较简单的构造和时序,事例如虚拟种系统必需用到一些独有的缓存、为了支持分页必需用到缓存缓存等,为了沙速磁盘的访回答期间必需 用到TLB,沙速有样本和解决问题程序的访回答期间而用到data cache和instruction cache等等。。。。。当然,那都是以前面该顾虑的,所以我们可先从这个简单的以外开始讲起。

事事例之以前能发挥作用如下解决问题程序:

mv解决问题程序将Ry的有样本集中于到Rx之以前,mvi将尽快有数D集中于到Rx当之以前,add将Rx和Ry的和敲打到Rx之以前,sub同上,不过督导的是小数。

首可先来暗示mv解决问题程序是如何督导的:mv解决问题程序将Ry的最大值移出Rx缓存当之以前,这两个缓存都是由都由D缓冲内置还包括,而D缓冲内置的个有数衡量缓存的宽度,就像 32位机、64位机这样,那他们的缓存用到的D缓冲内置的个有数就是不一样的。当督导mv rx,ry时,之以前间的MD内置(由此可知之以前最大的那个multiplexer)选通Ry,让Ry缓存涡轮链路,这个时候Bus上的接收机就是Ry的最大值;然后先认出 R0~R7上分别有R0in~R7in接收机,这个接收机是使能接收机,当这个接收机必要性时,在上升沿此缓冲内置就会将din的有样本转化,所以说是到这里大家一定就让 了,这个时候Rx缓冲内置上的Din接收机就就会转变成必要性,这样过了一个步进心率后Ry的最大值就被送去去了Rx当之以前。

与mv解决问题程序类似于,mvi解决问题程序也将一个有样本送去入Rx当之以前,似乎这次的有样本存在解决问题程序当之以前,是尽快有数,所以Rx的Din接收机就会转变成必要性,而MD内置就会自由选择IR之以前的有样本,因为mvi解决问题程序的尽快有数存在解决问题程序当之以前。并且顺利完成一定解决问题,事例如拓展等。

add 解决问题程序就会让MD内置可先自由选择Rx,然后Ain接收机必要性,这样一个步进心率后,Rx有样本被送去入Alu的A缓存当之以前,这时MD内置自由选择Ry,addsub接收机为 add以指引ALU顺利完成沙法加载,Gin必要性让G缓存贮存指令集结果,然后先过一个步进心率G当之以前的有样本就是Rx与Ry的和,这时MD内置先自由选择 Gin,Rx的Din必要性,过了一个步进心率后有样本就被贮存到Rx当之以前了。

sub的反复与add差不多,不过addsub接收机是sub指引ALU顺利完成小数。

我就让的CPU基本概念

前面我就将我就让的CPU基本概念的RTL网备注发出有来,编译内置我就会上传的,但是这个还才就会顺利完成辅助设计,因为结构设计 的时候理念有关键回答题,出有原是了异步结构设计,而且出有原是了将正常机的转化有作为另一个晶体管的步进前端的误判,所以这个基本概念才就会用到辅助设计。我用的synplify pro综合出有的RTL,而正常集中于由此可知是用的Quartus的FSM Viewer截下来的。

首可先是整个系统就会的概览:

这个比上就会的那个简单基本概念相比较简单多了吧!但是别担心,回事这个只是上就会的那个CPU变得稍微相比较简单了一点,这个和上就会那个各不相同的地方还有:这个CPU是一个多心率CPU而上就会的Lab Exercise是一个单心率的CPU

下由此可知是解决问题程序计有数内置(PC),也就是常见x86晶片;还有的ip(instruction poiniter):

红色以外就是pc了,以前面是一个三态大桥,联接到了链路上就会,这里的有样本多半是要送去去URL链路,用到寻磁盘之以前的有样本,以便完成Instruction Fetch反复。多半又要送去去国际另行标准化组织缓存的有样本前端,用到将pc的最大值送去去其他缓存。

前面这个是IR(Instruction Register),这个是多心率晶片的类似于于相似性,因为晶片在第一个心率;还有将执行期从磁盘装进有,然后贮存到这个缓存;还有,以前面的几个正常都是通过这个缓存;还有的有样本作为指引督导加载的。

前面简述一下ALU,ALU是Arithmetic Logic Unit,即演输范式短剧,这个控制系统的作用是顺利完成演输加载和范式加载。类似于于的演输加载事例

如:1+1=2,11x23=253,而类似于于的范式加载事例如:1 and 1=1,0 or 0 = 0,1<<3=8这种属于范式加载。

而从由此可知之以前大家也看得到,ALU的转化有用一根很长的线联接到了以前面,简介整个CPU的由此可知的话,就会推断出这些线连到了国际另行标准化组织缓存上就会,这是为了让指令集的结果贮存回 去,事例如你用add eax,1的时候,eax的最大值被沙上1然后敲打回eax,所以ALU的指令集结果要用测试者送去回到国际另行标准化组织缓存,而ALU的转化也必要有国际另行标准化组织缓存的转化有。

前面先简述ADDRMUX:

这个装配是用来自由选择URL的,右方的转化有是CPU的URL链路,而CPU的URL链路就早已送去出有CPU了(也就是你都能在晶片的面容上认出针脚了),CPU的URL链路是送去去存储内置的URL前端的,而原是代的数值机系统就会系统就会严格来说是是相当相比较简单的,所以回事你家的数值机系统就会上CPU是通过北大桥晶片访回答期间磁盘的(当然也有将磁盘操控内置就让到 CPU;还有的)左边是URL的相关联,URL的相关联即有国际另行标准化组织缓存,也有解决问题程序计有数内置,还有一个是直接从IR;还有送去出有,这是因为有的尽快有数;还有也还包括磁盘URL信息。

先前简述国际另行标准化组织缓存:

国际另行标准化组织缓存的作用就是用来保存之以前间最大值或者用到指令集,事例如

add eax,2

相当于eax+2然后送去回eax。

先前简述一下正常机,这个以外就是CPU的“生命”,如果说是有了上就会那些装配CPU有了一副“全部都是身”的话,这一以外就是CPU的“生命”了:

正常机基本上与系统就会所有的组件都联接到一起了,因为上就会所说是的所有动作的督导,都必需正常机的操控,正常机回事就是由一以外缓冲内置还包括的记忆电容和另外第一部 分复合范式还包括的次态简而言之电容还包括,还有根据当以前正常和转化顺利完成简而言之的以外用到操控各个装配,前面是教科书上的类似于于FSM构造:

而我们用的正常机正常集中于由此可知如下:

因为这个晶片结构设计的很简单,所以未出有原是很多正常,当晶片年之以前完以上的正常此后,晶片就督导完了一条解决问题程序。

有的CISC的晶片用微解决问题程序顺利完成操控,作用和正常机近似于,这种构造出有原是今一些相比较古老的晶片上,因为那个时候的结构设计辅助工具和方法未原是今的可精良,所以未必一定 变动涡轮程序是紧迫的和高运输成本的,所以用微解决问题程序的话,准备好了涡轮程序的构造,要是必需变动只要简化微解决问题程序就好了,而原是今的电子技术很发达,结构设计辅助工具也很完备,所以 就有很多直接通过硬连到发挥作用的晶片。

好马配好菱,有了晶片,我们就得给它配一个好的解决问题程序,前面我们就用自己结构设计的晶片顺利完成劝降,从1沙到100,因为我们未结构设计编译内置,也未结构设计增补内置,所以解决问题程序才就会用执行期不读到有,示事例解决问题程序如下:

我们不妨可先不读到有解决问题程序的增补编译内置:

mov [ADDR],r0;r0 = 0mov r1,100lop:add r2,r1sub r1,1cmp r1,0jz extmov r4,4jmp r4(lop)ext:mov [ADDR],r2jmp $

可先将磁盘之以前贮存有样本的URL清零,这样才能贮存等下献上的结果,然后将r1缓存存入循环系统次有数(也就是劝降的上限)。然后先将r1的最大值沙到r2之以前来,r2回事就是敲打劝降的缓存,先前我们就会将r2之以前的最大值送去去磁盘之以前的某个URL贮存的。

然后将r1乘上1,想想是否为0?如果为0则暗示劝降落幕了,如果不是0则暗示还要继续,落幕后解决问题程序就跳到ext以外将结果贮存到磁盘之以前某个URL(事事例之以前给 的是49152也就是二进制的1100000000000000b),先前jmp $是为了让解决问题程序停在这一行,能避免解决问题程序跑飞(跑飞的解决问题程序损害较大!有意味著吧有样本当编译内置或者把编译内置当有样本!)

转化VerilogHDL语法如下:

module memory(input [15:0] addr,inout [15:0] data,input rw);reg [15:0] data_ram[0:16'b1111_1111_1111_1111];integer i;initial beginfor (i = 0; i <= 16'b1111_1111_1111_1111; i = i + 1)data_ram[i] = $random();data_ram[0] = 16'b1000000100000000; //mov [ADDR],r0;r0 = 0data_ram[1] = 16'b1100000000000000; //ADDRdata_ram[2] = 16'b1000000010001000; //mov r1,100data_ram[3] = 100; //100//data_ram[2] = 16'b1110011001000000;data_ram[4] = 16'b0010000100010001; //lop:add r2,r1data_ram[5] = 16'b1110000011001000; //sub r1,1data_ram[6] = 16'b0000000000000001; //1data_ram[7] = 16'b1110000000001000; //cmp r1,0data_ram[8] = 16'b0000000000000000; //0data_ram[9] = 16'b1110011010000000; //jz extdata_ram[10] = 16'b0000000000000011; //+3 offset(ext)data_ram[11] = 16'b1000000010100000;//mov r4,4data_ram[12] = 16'b0000000000000100;data_ram[13] = 16'b0110011001100000;//jmp r4(lop)data_ram[14] = 16'b1000000100000010;//ext:mov [ADDR],r2data_ram[15] = 16'b1100000000000000;//ADDRdata_ram[16] = 16'b1110011001000000;//jmp $data_ram[17] = 16'b1111111111111110;//-2 offset($)/*data_ram[0] = 16'b1000000010000000; //mov r0,immdata_ram[1] = 16'b0011111111111111; //immdata_ram[2] = 16'b0000000001111000; //mov r7,r0data_ram[3] = 16'b1000000010011000; //mov r3,0data_ram[4] = 16'b0000000000000000;data_ram[5] = 16'b1000000010100000; //mov r4,code of jmp r5data_ram[6] = 16'b0110011001101000; //jmp r5data_ram[7] = 16'b0000000101011100; //mov [r3],r4data_ram[8] = 16'b1000000011110000; //mov r6,[0]data_ram[9] = 16'b0000000000000000; //[0]data_ram[10]= 16'b1000000100000110; //mov [255],r6data_ram[11]= 16'b0000000011111111;data_ram[12]= 16'b0110011001011000; //jmp r3*/endalways @ (addr or rw or data)if (rw)data_ram[addr] = data;assign data = rw ? 16'hzzzz : data_ram[addr];endmodule

结构设计之以前CPU外围还必需一个磁盘仪器(Memory),我用HDL对其建模,绑定的时候每个磁盘URL上完全部都是相同的有样本都绑定为随机的,然后只有从0开始的一第四部URL被绑定为我所写的编译内置,执行期完全部都是相同的增补解决问题程序在注释之以前早已数值出来有。

然后是结果,结果必要是r2从0变动到5050(1+2+3+......+100=5050)

而r1则从100变动到0,变动到0后解决问题程序将重回死循环系统,暂缓在jmp $那一条。这是辅助设计开始的时候:

大家可以认出绑定后,d0~d7都演变成了0,这是r0~r7缓存的Q前端,而state_current和state_next则是正常机的原是态和正常机 的次态,cpu的各个装配都通过这个正常机受到操控。正常名出有原是的依序和上就会的FSM Viewer的连到依序是一样的。

而且大家可以认出,d2从0变动到了0x64也就是无理数100,暗示早已督导了第一次沙法了。

先来想想辅助设计落幕:

这时候d1变动到了0而d2变动到了0x13ba(无理数的5050),暗示解决问题程序早已在我们结构设计的晶片;还有开始运行并且成功的得出有了结果!

先前数值出来有一些我用到的解决问题程序(跟x86的很像):

add dst,src 将src和dst相沙并且送去去dst缓存之以前mov [addr],src 将src的最大值送去去以addr位URL的磁盘短剧sub dst,src 将dst乘上src并且送去去dst之以前去cmp dst,src 将dst乘上src 然后不送去去dst之以前 只扭曲标志位jz dst 当zf=1时(即前次的演输加载结果为0)则控件到dst之以前去

注解作者: STM32笔记本电脑开发设计

注解标题:PID似乎是个啥?讲个小故事告诉你

注解镜像:

济南耳鼻喉医院
老人的四肢关节僵硬
双手关节僵硬什么原因
阿莫西林胶囊治疗感冒吗
艾得辛的治疗效果如何
相关阅读
友情链接