1.应用背景

PC/104总线嵌入式工控机是专门为工控领域设计的具有特定尺寸和接口的计算机。

但是在特定的工控中,对处理器的功耗有严格要求。基于X86架构的PC104工控机发热过大容易造成系统的不稳定。ARM架构的处理器具有低功耗高处理的能力,很好弥补了上述不足。但ARM中不支持PC104总线。因此,可以采用ARM+CPLD的结构,通过CPLD来构造PC104部分的时序。附件中论文有对ARM和X86处理器的介绍和比较。

                                  1PC104主要信号的描述

ARM+CPLD的结构来支持PC104总线,CPLD的作用是把本地总线转化为PC104的总线,这也是整个系统的难点。此外,ARM在电平模式制造工艺上和PC104存在差异,所以他们之间还要其他的物理手段处理。值得一提的是,该方案是不支持DMA传输的。具体的系统结构如下图:

                                                          图2:系统结构

                                                  图3:网上的一个接口实例

 

2.设计分析:

CPLD需要做的工作,其实有以下三点:

  1. PC104设备端BALE,SA/LA<23:17>,SD,数据和ARM端nGCS,ADDR,DATA的时序转换

  2. PC104设备端SMEMW/R MEMW/R,IOW/R和ARM端OE,WE时序的转换

  3. PC104设备端IOCHDY和ARM端的nWAIT时序的转换

(注意:MEMCS16、IOCS16、SBHE这类判断是16位还是8位的信号线其实也是需要控制的。但是在本案例中MEMCS16、IOCS16在原理图中是给的固定值,所以在此处省略。)

PC104设备端(PC104总线)和 ARM端(ARM读写总线)的时序图如下:

                     图4.  PC104端的IO模式读写时序(8位)

                                          图5. ARM的读写时序

对照标准的PC104协议,读写模式有多种。本案例中,只是基于最简单的IO和内存读写模式, 许多信号暂时用不到。具体如下:

DACK3,DRQ3,DACK1,DRQ1,REFRESH,DACK2,TC,OSC,IOCHCK,MEMCS16,IOCS16,DACK0,DRQ0,DACK5,DRQ5,DACK6,DRQ6,DACK7,DRQ7,MASTER

需要CPLD来协调的PC104设备端信号主要为以下几点:

地址:A0~A19,L17~L23

数据:D0~D7,D8~D15

延迟:IOCHRDY

地址允许锁存:BALE

中断:IRQ

时钟:SYSCLK

IO读写:IOW/R

内存读写:SMEMW/R MEMW/R

复位:RSTDRY

总线高字节允许信号:SBHE  (该信号有效时表示数据总线上传送的是高位字节数据,在本例中由于MEMCS16等信号都是在原理图中给的定值,因此SBHE在CPLD里也是给定值)

地址允许信号:AEN(地址允许信号, 输出线, 高电平有效。AEN=1,表明处于 DMA

控制周期; AEN=0,表示非 DMA 周期。此信号用来在 DMA 期间禁止 I/O 端

口的地址译码,本例中直接置0)。

需要CPLD来协调和ARM端信号主要为以下几点:

时钟:HCLK

地址:ADDR

选通:nGCS

读写使能:nOE/WE

数据:DATA

等待:nWait

 3.设计实现

CPLD的操作总体思路:

  1. 检测ARM的nGCS 和复位信号。若复位以及未选通,则所有信号初始状态。 BALE<=0;nWAIT<=1;

  2. 在非复位以及选通状态(nGCS拉低,从ARM角度讲已经开始读写操作,正常时序里,此刻的地址位已经准备好),将输出给ARM的nWAIT信号置低,让ARM处理器开始处于延迟状态。

  3. BALE信号拉高,等待一个周期然后跳入下一个状态

  4. BALE信号拉低,与3状态配合实现下降沿,将地址锁存(此步骤是将ARM的地址总线转变为PC104的总线时序)

  5. 检测PC104设备端返回的IOCHRDY信号。如果拉高,代表PC设备端已经完成读写时序。在此处设置一个定时器,若高电平保持的时间满足了我们的设定值,则将nWAIT信号置高,ARM则不需要维持在延迟的状态。

  6. 这一步骤不在PROCESS中,单独实时变化。PC104端的MEMR/W,和IOW/R,SBHE,AEN信号是主要是由ARM的nOE(读),nWE(写),ADDR24(IO访问或者内存访问)决定的。具体逻辑关系为:

7.            产生一个ARM和PC104时钟转换模块,将两者时钟匹配

备注:第6步也放在process中应该也可以,具体没研究。

4.附件

一篇有关如何实现PC104总线的论文:https://download.csdn.net/download/weixin_42229533/10647144

[FPGA基础应用]基于CPLD+ARM架构模拟PC104总线时序相关推荐

  1. 基于51单片机实现模拟IIC总线时序

    最近用到测量光线的模块BH1750FVI时需要用到IIC总线操作, 于是就又费功夫学习了下, 基本上算是了解了, 所以呢, 就用51的IO口, 模拟出了总线时序, 并能正确操纵需要用IIC总线访问地一 ...

  2. 【FPGA基础】基于 Pango Design Suite(PDS) 的FPGA开发流程

    导读:本文旨在通过 LED 的 Demo,实现快速上手基于PGL22G的FPGA开发. 文章目录 一.创建工程 二.编写流水灯的 verilog 代码 三.添加 UCE 约束 四. 生成位流文件 五. ...

  3. 【FPGA基础】基于PWM脉宽调制的呼吸灯设计(Vivado)

    基于PWM脉宽调制的呼吸灯设计(Vivado) 1.开发环境 2.预备知识 3.思路介绍 4.verliog代码 5.仿真 1.开发环境 软件:Vivado2019.1 硬件:Zynq7010 仿真: ...

  4. 小知识点:ARM 架构 Linux 大数据集群基础环境搭建(Hadoop、MySQL、Hive、Spark、Flink、ZK、Kafka、Nginx、Node)

      换了 M2 芯片的 Mac,以前 x86 版本的 Linux 大数据集群基础环境搭建在 ARM 架构的虚拟机集群上有些用不了了,现在重新写一份基于 ARM 架构的,少数不兼容之外其他都差不多,相当 ...

  5. 详谈ARM架构与ARM内核发展史

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 架构师技术联盟 责编 | 阿秃 1.ARM架构与ARM内核 1.1 ARM架构与内核简述 目前为止,ARM总共发布8种架构:ARMv ...

  6. 详解PowerPC、X86和ARM架构区别

    在嵌入式领域,存在着三种处理器通用的架构,PowerPC.X86.ARM,本文将对这三种架构进行对比分析. 1.PowerPC的由来 1975 年, IMB 公司801 小型计算机工程在RISC机体系 ...

  7. TI基于DSP+ARM的双核架构如何相互通信

    1 通信结构简介 针对当前应用的复杂性,SOC芯片更好能能满足应用和媒体的需求,集成众多接口,用ARM做为应用处理器进行多样化的应用开发和用户界面和接口,利用DSP进行算法加速,特别是媒体的编解码算法 ...

  8. 基于ARM架构下的PI数据库远程存储

        随着信息技术的进步,计算机技术在工厂的控制层和管理层都得到了充分和广泛的应用.而当计算机技术的应用要求进一部深入和提升时,势必要求把生产控制层和管理层连接起来.实时数据库系统能够及时地把控制层 ...

  9. 基于ARM架构openEuler系统通过qemu模拟器自动安装启动ARM架构的openEuler虚拟机

    [原文链接]基于ARM架构openEuler系统通过qemu模拟器自动安装启动ARM架构的openEuler虚拟机 文章目录 一.基础准备工作 二.自动创建基于dhcp自动获取ip地址的openEul ...

  10. 基础篇. ARM架构和处理器(3)

    ARMv8\ARMv9架构部分特性总结 todo... 1.Armv9-A 架构 Armv9-A 架构建立在 Armv8-A 架构的基础上并向前兼容. Armv9-A 架构构成了 Arm 基础系统架构 ...

最新文章

  1. bert推理速度太慢如何解决
  2. 四、MySql七个查询命令中哪些命令执行效率过慢
  3. android php mysql json 查询_使用json从PHP-MySql服务器到Android获取图像
  4. 一道Python面试题
  5. 小程序学习(一):点击爱心变色 -- 最简单的事件实现
  6. iOS自动布局进阶用法
  7. ENVI5.3安装教程|带资源
  8. PHP 使网站进行跨域访问
  9. CSS 字体风格 font-style属性
  10. recovery升级是显示进度条_注意!税控系统软件升级了,还有疑问看这里!
  11. ios 发送请求时按home_iPhone 是否能够升级至指定的 iOS 系统版本?
  12. Git配置安装使用教程操作github上传克隆数据
  13. SUS安装配置简明图解攻略
  14. 轻量级监控系统 - Monitorix
  15. js的基本类型有哪些?引用类型有哪些?(二)------null和undefined的区别
  16. 惠普179fnw打印机使用说明_惠普179fnw驱动下载
  17. 约瑟夫环(简单理解版)
  18. 房地产里有多少“三季人”?
  19. 如何用MATLAB求解一元高次方程
  20. 图像处理之图像的像素运算

热门文章

  1. 吉林大学软件学院软件构件与中间件技术
  2. N76E003替换STM8S003F3
  3. 【工具】Movielens数据集详细介绍
  4. 数据资料网站_更新......
  5. Redis内存碎片处理
  6. YYText学习之根据range设置text的颜色和边框
  7. CAD - 多段线、矩形、修订云线、样条曲线
  8. python十折交叉验证
  9. 拼多多台式计算机主机,拼多多电脑端直播常见问题及解决方案汇总
  10. 电商平台拼多多详情接口API数据获取示例