0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CPU如何识别代码

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-10-09 17:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

半导体其实就是介于导体和绝缘体中间的一种东西,比如二极管

9f595b52-457a-11ed-96c9-dac502259ad0.jpg

电流可以从A端流向C端,但反过来则不行。你可以把它理解成一种防止电流逆流的东西。

当C端10V,A端0V,二极管可以视为断开。

当C端0V,A端10V,二极管可以视为导线,结果就是A端的电流源源不断的流向C端,导致最后的结果就是A端=C端=10V

等等,不是说好的C端0V,A端10V么?咋就变成结果是A端=C端=10V了?

你可以把这个理解成初始状态,当最后稳定下来之后就会变成A端=C端=10V。

文科的童鞋们对不住了,实在不懂问高中物理老师吧。反正你不能理解的话就记住这种情况下它相当于导线就行了。 利用半导体,我们可以制作一些有趣的电路,比如【与门】

9f6de16c-457a-11ed-96c9-dac502259ad0.jpg

此时A端B端只要有一个是0V,那Y端就会和0V地方直接导通,导致Y端也变成0V。只有AB两端都是10V,Y和AB之间才没有电流流动,Y端也才是10V。 我们把这个装置成为【与门】,把有电压的地方计为1,0电压的地方计为0。至于具体几V电压,那不重要。 也就是AB必须同时输入1,输出端Y才是1;AB有一个是0,输出端Y就是0。 其他还有【或门】【非门】和【异或门】,跟这个都差不多,或门就是输入有一个是1输出就是1,输入00则输入0。 非门也好理解,就是输入1输出0,输入0输出1。 异或门难理解一些,不过也就那么回事,输入01或者10则输出1,输入00或者11则输出0。(即输入两个一样的值则输出0,输入两个不一样的值则输出1)。 这几种门都可以用二极管做出来,具体怎么做就不演示了,有兴趣的童鞋可以自己试试。每次都画二极管也是个麻烦,我们就把门电路简化成下面几个符号。

9f87089a-457a-11ed-96c9-dac502259ad0.jpg

然后我们就可以用门电路来做CPU了。当然做CPU还是挺难的,我们先从简单的开始:加法器。 加法器顾名思义,就是一种用来算加法的电路,最简单的就是下面这种。

9f9c6848-457a-11ed-96c9-dac502259ad0.jpg

AB只能输入0或者1,也就是这个加法器能算0+0,1+0或者1+1。 输出端S是结果,而C则代表是不是发生进位了,二进制1+1=10嘛。这个时候C=1,S=0 费了大半天的力气,算个1+1是不是特别有成就感? 那再进一步算个1+2吧(二进制01+10),然后我们就发现了一个新的问题:第二位需要处理第一位有可能进位的问题,所以我们还得设计一个全加法器。

9fb15f28-457a-11ed-96c9-dac502259ad0.jpg

每次都这么画实在太麻烦了,我们简化一下

9fcd0070-457a-11ed-96c9-dac502259ad0.jpg

也就是有3个输入2个输出,分别输入要相加的两个数和上一位的进位,然后输入结果和是否进位。 然后我们把这个全加法器串起来

9fdaf6c6-457a-11ed-96c9-dac502259ad0.jpg

我们就有了一个4位加法器,可以计算4位数的加法也就是15+15,已经达到了幼儿园中班水平,是不是特别给力? 做完加法器我们再做个乘法器吧,当然乘任意10进制数是有点麻烦的,我们先做个乘2的吧。 乘2就很简单了,对于一个2进制数数我们在后面加个0就算是乘2了 比如:

5=101(2) 10=1010(2)

所以我们只要把输入都往前移动一位,再在最低位上补个零就算是乘2了。具体逻辑电路图我就不画,你们知道咋回事就行了。 那乘3呢?简单,先位移一次(乘2)再加一次。乘5呢?先位移两次(乘4)再加一次。 所以一般简单的CPU是没有乘法的,而乘法则是通过位移和加算的组合来通过软件来实现的。这说的有点远了,我们还是继续做CPU吧。 现在假设你有8位加法器了,也有一个位移1位的模块了。串起来你就能算了!

(A+B)X2

激动人心,已经差不多到了准小学生水平。 那我要是想算呢?

AX2+B

简单,你把加法器模块和位移模块的接线改一下就行了,改成输入A先过位移模块,再进加法器就可以了。 啥????你说啥???你的意思是我改个程序还得重新接线? 所以你以为呢?编程就是把线来回插啊。

惊喜不惊喜?意外不意外? 早期的计算机就是这样编程的,几分钟就算完了但插线好几天。而且插线是个细致且需要耐心的工作,所以那个时候的程序员都是清一色的漂亮女孩子,穿制服的那种,就像照片上这样。是不是有种生不逢时的感觉? 虽然和美女作伴是个快乐的事,但插线也是个累死人的工作。所以我们需要改进一下,让CPU可以根据指令来相加或者乘2。 这里再引入两个模块,一个叫flip-flop,简称FF,中文好像叫触发器。

a02137a8-457a-11ed-96c9-dac502259ad0.jpg

这个模块的作用是存储1bit数据。比如上面这个RS型的FF,R是Reset,输入1则清零。S是Set,输入1则保存1。RS都输入0的时候,会一直输出刚才保存的内容。 我们用FF来保存计算的中间数据(也可以是中间状态或者别的什么),1bit肯定是不够的,不过我们可以并联嘛,用4个或者8个来保存4位或者8位数据。这种我们称之为寄存器(Register)。 另外一个叫MUX,中文叫选择器。

a038b8d8-457a-11ed-96c9-dac502259ad0.jpg

这个就简单了,sel输入0则输出i0的数据,i0是什么就输出什么,01皆可。同理sel如果输入1则输出i1的数据。当然选择器可以做的很长,比如这种四进一出的

a04bf182-457a-11ed-96c9-dac502259ad0.jpg

具体原理不细说了,其实看看逻辑图琢磨一下就懂了,知道有这个东西就行了。 有这个东西我们就可以给加法器和乘2模块(位移)设计一个激活针脚。 这个激活针脚输入1则激活这个模块,输入0则不激活。这样我们就可以控制数据是流入加法器还是位移模块了。 于是我们给CPU先设计8个输入针脚,4位指令,4位数据。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11218

    浏览量

    222953
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73151

原文标题:CPU 到底是怎么识别代码的?

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Arm Neoverse CPU上大代码量Java应用的性能测试

    Java 是互联网领域广泛使用的编程语言。Java 应用的一些特性使其性能表现与提前编译的原生应用(例如 C 程序)大相径庭。由于 Java 字节码无法直接在 CPU 上执行,因此通常运行时在
    的头像 发表于 11-05 11:25 375次阅读
    Arm Neoverse <b class='flag-5'>CPU</b>上大<b class='flag-5'>代码</b>量Java应用的性能测试

    淘宝拍立淘接口实战:图像优化、识别调优与避坑代码示例

    本文详解淘宝拍立淘接口(taobao.picture.search)实战技巧,涵盖图像预处理、识别优化、签名生成与供应链数据联动,结合代码示例解析高频坑点,如Base64格式错误、限流处理、分页失效等,助开发者提升识别率至85%
    的头像 发表于 10-09 14:28 242次阅读

    找正方形的代码我把roi删除过后能识别到正方形,加上roi后就识别不出来,为什么?

    找正方形的代码我把roi删除过后能识别到正方形,加上roi后就识别不出来,更改roi为更大更稳定的范围也识别不到,麻烦解答一下,谢谢
    发表于 08-14 06:23

    单核CPU网关和双核CPU网关有什么区别

    单核CPU网关与双核CPU网关的核心区别在于处理能力、多任务效率、性能表现及适用场景,双核CPU网关在多任务处理、复杂计算和响应速度上具有显著优势,而单核CPU网关则更适合轻量级、低负
    的头像 发表于 07-05 14:37 735次阅读

    基于LockAI视觉识别模块:C++人脸识别

    本文基于RV1106做成的LockAI视觉识别模块,采用 LZ-Picodet 模型训练的人脸检测模型 LZ-Face,以及ArcFace人脸识别模型,实现人脸识别系统。 源代码:ht
    发表于 07-01 12:01

    基于LockAI视觉识别模块:手写数字识别

    手写数字识别是一种经典的模式识别和图像处理问题,旨在通过计算机自动识别用户手写的数字。 本文将教会你如何使用基于RV1106的 LockAI视觉识别模块进行手写数字
    发表于 06-30 16:45

    有偿求助!esp32cam摄像头车牌识别代码执行时,上位机闪退

    esp32cam摄像头车牌识别在操作执行识别车牌打开摄像头,上机位直接闪退,摄像头在例程检测是有图片的,有偿找一个能帮我修改整体代码
    发表于 06-03 16:18

    请问训练平台训练完的识别程序,可以实现在识别到物体时屏幕再显示出来,没有识别到物体时屏幕不显示吗?

    问题如题,训练平台训练完的识别程序,可以实现在识别到物体时屏幕再显示出来,没有识别到物体时屏幕不显示吗?比较小白,可以解释一下怎么做吗?或者是我应该学哪里? 如果直接使用平台下载的代码
    发表于 04-29 06:12

    信创国产CPU推荐

    cpu
    jf_10805031
    发布于 :2025年04月23日 17:20:43

    基于RV1126开发板实现人脸识别方案

    在RV1126上实现人脸识别:在图像中找出人脸,并与数据库进行比对,得出该人脸对应的身份信息。 方案设计逻辑流程图,方案代码分为分为三个业务流程,主体代码负责抓取、合成图像,算法
    的头像 发表于 04-21 13:51 11次阅读
    基于RV1126开发板实现人脸<b class='flag-5'>识别</b>方案

    基于RV1126开发板实现人脸识别方案

    在RV1126开发板上实现人脸识别:在图像中找出人脸,并与数据库进行比对,得出该人脸对应的身份信息。 方案设计逻辑流程图,方案代码分为分为三个业务流程,主体代码负责抓取、合成图像,算法
    的头像 发表于 04-21 10:24 107次阅读
    基于RV1126开发板实现人脸<b class='flag-5'>识别</b>方案

    基于RV1126开发板实现人脸识别方案

    在RV1126开发板实现人脸识别:在图像中找出人脸,并与数据库进行比对,得出该人脸对应的身份信息。 方案设计逻辑流程图,方案代码分为分为三个业务流程,主体代码负责抓取、合成图像,算法
    的头像 发表于 04-18 16:55 83次阅读
    基于RV1126开发板实现人脸<b class='flag-5'>识别</b>方案

    CPU的各种指令和执行流程

    在集成电路设计中,CPU的指令是指计算机中央处理单元(CPU)用来执行计算任务的基本操作指令集。这些指令是CPU能够理解并执行的二进制代码,它们在计算机内部由硬件控制并按顺序执行,从而
    的头像 发表于 04-18 11:24 1923次阅读

    村田电容标签材质代码如何看?

    村田电容的标签上通常包含一系列代码,用以表示电容的具体参数和特性。以下是如何解读村田电容标签上的材质代码的步骤: ​一、识别基本型号 村田电容的型号通常以字母开头,如GRM、GR3、GRJ等,这些
    的头像 发表于 01-13 14:14 1428次阅读

    三星贴片电容识别容值代码方法

    三星贴片电容的容值代码识别方法主要基于其型号编码中的特定部分。以下是一个详细的识别步骤和说明:    一、识别容值代码的基本步骤    查看
    的头像 发表于 12-13 16:17 1307次阅读
    三星贴片电容<b class='flag-5'>识别</b>容值<b class='flag-5'>代码</b>方法