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

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

3天内不再提示

古老CPU启示录-MC14500 1位CPU

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2021-05-08 11:31 次阅读

古老CPU启示录-MC14500 1位CPU(ICU 简介 在20世纪80年代4位、8位CPU逐渐成为主流,但是当时的CPU发展还处于探索阶段,所以各种“奇葩”的CPU都有出现,今天给大家带来1-bit CPU MC14500和GI SBA。两者差不多以MC14500为例看下这款“奇葩”CPU。 MC14500是一种工业控制单元(ICU),也被认为是1位处理器。它由摩托罗拉(Motorola)生产,但几年前已停止生产。如今,MC14500已经被价格合理的FPGA取代了,包括其所有外设和程序存储器。至今仍存在使用MC14500设计的不同原因: 1、为旧的MC14500计算机创建备件; 2、重复使用MC14500软件; 3、FPGA开发(VHDL代码=》电子专家)与应用程序(应用工程师)之间的分离; 4、低成本PLC替代品; 5、在现代FPGA上运行具有历史意义的东西很有趣; 6、使用FPGA的学习项目。

特点:

(1)16条指令;

(2)编程容易;

(3)容易掌握,不需要特殊的技术人员;

(4)由于使用外部存储器,系统变得容易;

(5)能满足用户的特定需求,具有丰富的灵活性;

(6)能满足用户的特定需求,具有丰富的灵活性;

(7)能够扩展以适应所有系统的规模和复杂程度;

(8)能够进行程序设计;

(9)B系列C-MOS符合JEDE规格

(10)噪音容限大;

(11)不工作时漏电流小;

(12)工作电压3~18V;

(13)时钟频率范围广,一般工作频率1MHz(VDD=5V,一个时钟执行一条指令);

(14)信号输入和TTL互换;

(15)将判断作为中心工作,超过微处理器的性能;

(16)应用范围广,由继电器回路开始的逻辑判断处理到中速度的串行数据处理,还能减轻超负荷的微处理器系统的工作。

MC14500允许使用IO地址读取输入位。该位可以使用4位指令和内部1位结果寄存器RR进行处理。结果可以写入IO地址的输出位。 输入和输出数据位可以是物理输入和输出,其中可以连接电线,但它们可以连接到其他设备作为RAM定时器。 IO的寻址完全在MC14500外部完成。MC14500的所选指令的4位和外部IO多路复用器的IO地址行导致程序存储器的数据宽度。MC14500使用术语“内存字”来表示从程序内存中输出的数据。本文档使用术语“command”作为“memory word”的同义词。因此,命令由两部分组成:指令和IO地址。 由于IO地址在MC14500的外部,因此不同实现之间的命令可能不同。此外,命令中4个指令位的位置也取决于设计。指令位可能占用命令中的高位或低位。 MC14500不包含从程序存储器中寻址要处理的命令的程序计数器。因此,MC14500设计的程序计数器位数可能不同。

程序内存或命令的宽度是指令的4位加上IOaddress行数。小型MC14500设计将使用8位宽的程序存储器,能够选择多达16个IO地址。由于这并不多,许多MC14500设计使用12位宽的程序存储器,可以选择多达256个IO地址。12位宽的程序存储器使用过去存在的4位宽的ROM设备。其他MC14500设计使用8位宽的程序存储器,但是每个MC14500命令有两个字节被读取,因此形成了一个16位宽的命令,能够寻址多达4096个IO地址线,用于物理IO、单位宽RAM和定时器硬件。在MC14500设计中,从程序存储器中读取两次会产生另一种变化,从程序中读取的第一个字节可能在一种设计中是低字节,但在另一种设计中是命令的高字节。

利用MC14500搭建的外围系统:

o4YBAGCWCB-ACCqwAABsZnAHo5k403.jpg

MC14500模拟

MC14500模拟器使用web技术和javascript来独立于平台,并且在将来也可以使用。这种实现的一个缺点是javascript模拟器不能访问用户的文件系统或硬件。

模拟器在支持svg的浏览器上运行。

按下“步进”按钮意味着下降的时钟边缘,因此MC14500加载指令和输入数据。 释放“步进”按钮意味着上升的时钟边缘,因此MC14500写入数据。程序计数器增加。在程序存储器访问时间之后,下一条指令和IO地址出现在MC14500和输出、输入或RAM上。 详细的介绍就不过多赘述,网上还有利用Python进行汇编程序和反汇编程序的介绍。

FPGA实现

利用MC14500搭建的CPU 从上面的介绍可以看出MC14500和FPGA有很多相似的地方,接下来就用FPGA实现一下这款单比特CPU。

module mc14500b( input clk, input rst, input [3:0] i_inst, input i_data, output reg write = 0, output reg jmp = 0 , output reg rtn = 0, output reg flag0 = 0, output reg flagf = 0, output reg o_rr = 0, output reg o_data = 0 ); reg ien = 0, oen = 0; reg skip = 0; always @(negedge clk or posedge rst) begin

// Reset any flags from last clock. jmp 《= 0; rtn 《= 0; flag0 《= 0; flagf 《= 0; write 《= 0;

// FIX this it‘s not right technically. if (rst) begin

// reset behavior. reset internal flags and ignore clock. ien 《= 0; oen 《= 0; o_rr 《= 0; skip 《= 0; end else begin if (~skip) begin // skip case(i_inst) 4’b0000 : flag0 《= 1;

// NOPO 4‘b0001 : o_rr 《= ien & i_data; // LD 4’b0010 : o_rr 《= ien & ~i_data; // LDC 4‘b0011 : o_rr 《= ien & (i_data & o_rr); // AND 4’b0100 : o_rr 《= ien & (~i_data & o_rr); // NAND 4‘b0101 : o_rr 《= ien & (i_data | o_rr);

// OR 4’b0110 : o_rr 《= ien & (~i_data | o_rr); // NOR 4‘b0111 : o_rr 《= ien & (o_rr == i_data);

// XNOR 4’b1000 : begin // STO // DATA -》 RR, WRITE -》 1 for a clock (if oen is allowed)。 o_data 《= oen & o_rr; write 《= oen; end 4‘b1001 : begin // STOC

// DATA -》 ~RR, WRITE -》 1 for a clock. o_data 《= ~o_rr; write 《= oen; end 4’b1010 : ien 《= i_data; 4‘b1011 : oen 《= i_data; 4’b1100 : jmp 《= 1; 4‘b1101 : begin

// RTN rtn 《= 1; skip 《= 1; end 4’b1110 : skip 《= ~o_rr; 4‘b1111 : flagf 《= 1; endcase end else begin

// reset skip flag after clocking with skip once. skip 《= 0; end end end // neg edge// always @(posedge clk) begin// write 《= 0;// endendmodule

原文标题:你见过1-bit CPU吗?

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

责任编辑:haq

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

    关注

    1625

    文章

    21665

    浏览量

    601751
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211123

原文标题:你见过1-bit CPU吗?

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

收藏 人收藏

    评论

    相关推荐

    【书籍评测活动NO.49】大模型启示录:一本AI应用百科全书

    读者将会看到《大模型启示录》的第二版,只因时代在不断推动我们更新知识。 申请时间 2024年10月28日——2024年11月28日 活动参与方式 1、在本帖下方留言回帖说说你想要这本书的理由15字
    发表于 10-28 15:34

    服务器cpu和台式机cpu区别

    服务器CPU和台式机CPU的区别是一个复杂的话题,涉及到多个方面,包括设计、性能、功耗、可靠性、成本等。 服务器CPU和台式机CPU的区别 1
    的头像 发表于 10-10 15:12 819次阅读

    CPU主频是什么意思

    CPU主频,作为计算机处理器性能的一个重要指标,承载着丰富的技术内涵与实际应用价值。以下是对CPU主频的详细解析,包括其定义、用途、技术原理、影响因素以及在多个领域的实际应用。
    的头像 发表于 09-26 15:50 936次阅读

    CPU时钟周期的组成和作用

    CPU时钟周期是计算机体系结构中一个至关重要的概念,它直接关联到CPU的运行速度和性能。以下是对CPU时钟周期的定义、组成和作用的详细解析。
    的头像 发表于 09-26 15:32 393次阅读

    双核cpu和单核cpu的区别

    双核CPU与单核CPU在多个方面存在显著差异,这些差异主要体现在处理能力、性能、运行效率、功耗以及适用场景等方面。 一、概念与结构 双核CPU :指在一个处理器上集成两个运算核心,通过并行总线将各处
    的头像 发表于 09-24 16:17 1901次阅读

    将软件从8(字节)可寻址CPU迁移至C28x CPU

    电子发烧友网站提供《将软件从8(字节)可寻址CPU迁移至C28x CPU.pdf》资料免费下载
    发表于 09-06 10:42 0次下载
    将软件从8<b class='flag-5'>位</b>(字节)可寻址<b class='flag-5'>CPU</b>迁移至C28x <b class='flag-5'>CPU</b>

    什么是CPU缓存?它有哪些作用?

    CPU缓存(Cache Memory)是计算机系统中一个至关重要的组成部分,它位于CPU与内存之间,作为两者之间的临时存储器。CPU缓存的主要作用是减少CPU访问内存所需的时间,从而提
    的头像 发表于 08-22 14:54 2341次阅读

    CPU的各种知识

    1CPU和字长:在数字电路和电脑技术中采用二进制,代码只有“0”和“1”,其中无论是“0”或是“
    的头像 发表于 04-19 08:26 417次阅读
    <b class='flag-5'>CPU</b>的各种知识

    cpu是什么意思 CPU与PUA的区别

    CPU是计算机中央处理器(Central Processing Unit)的英文缩写,是计算机系统的核心部件之一。它负责处理和执行计算机中的指令,控制和协调计算机系统中的各个硬件设备的工作。 PUA
    的头像 发表于 02-05 10:47 1.2w次阅读

    服务器cpu和普通电脑cpu的区别

    服务器CPU和普通电脑CPU之间存在许多区别。在以下文章中,我们将详细介绍服务器CPU和普通电脑CPU之间的区别,并探讨它们在性能、稳定性、扩展性、功耗和可靠性方面的差异。 一、性能
    的头像 发表于 02-01 11:14 6448次阅读

    cpu温度太高怎么解决?cpu温度高的原因?

    如何解决这一问题。 一、CPU温度过高的原因 1. 散热系统不当:服务器或台式机的散热系统设计可能不够完善,或者由于久经使用而积灰、质量下降等问题。CPU散热器可能被堵塞,导致热量无法正常散发。 2. 过度超频:当用户对
    的头像 发表于 12-09 16:15 3074次阅读

    secondary cpu执行流程介绍

    secondary cpu执行流程 aarch64架构secondary cpu的内核入口函数为secondary_entry(arch/arm64/kernel/head.S),以下为其执行主流程
    的头像 发表于 12-05 16:12 793次阅读
    secondary <b class='flag-5'>cpu</b>执行流程介绍

    SMP多核启动cpu操作函数

    init_cpu_ops ( int cpu ) { const char *enable_method = cpu_read_enable_method(cpu); (
    的头像 发表于 12-05 16:04 706次阅读
    SMP多核启动<b class='flag-5'>cpu</b>操作函数

    cpu满载是什么原因 cpu容易满载怎么办 cpu过高怎么处理

    cpu满载是什么原因 cpu容易满载怎么办 cpu过高怎么处理  CPU满载是指CPU的使用率非常高,接近或达到100%的状态。
    的头像 发表于 11-28 17:29 1w次阅读

    CPU技术路线、分类及运行原理

    CPU按用途可分为桌面、服务器、移动端CPU和嵌入式CPU。桌面CPU主要应用于个人计算机(台式机、笔记本电脑)。服务器CPU主要用于服务器
    发表于 11-27 10:02 1816次阅读
    <b class='flag-5'>CPU</b>技术路线、分类及运行原理