在FPGA上对OC8051IP核的修改与测试

发布者:EtherealMelody最新更新时间:2010-01-07 来源: 解放军信息工程大学关键字:FPGA  OC8051  IP核 手机看文章 扫描二维码
随时随地手机看文章

  引 言

  20世纪80年代初,Intel公司推出了MCS-51单片机,随后Intel以专利转让的形式把8051内核发布给许多半导体厂家,从而出现了许多与MCS-51系统兼容的产品。这些产品与MCS-51的系统结构相同,采用CMOS工艺,因而常用80C51系列来指代所有具有8051指令系统的单片机。在80C51系列中,OC8051以架构清晰、取指带宽大、时钟效率高等诸多优点受到业内人士的青睐。本文在分析OpenCores网站提供的一款OC8051IP核的基础上,给出了一种仿真调试方案;利用该方案指出了其中若干逻辑错误并对其进行修改,最终完成了修改后IP核的FPGA下载测试。

  1 OC8051结构分析

  OpenCores网站提供的OC8051 IP核与8051的系统结构相同,如图1所示。该IP核兼容所有8051指令系统,内部资源包括:8位CPU,寻址能力达2×64K;4 KB的ROM和128字节的RAM;4个8位I/O口;16位内部定时/计数器;5个中断源和2个中断优先级。采用Verilog语言对其各个模块进行描述。系统主要模块及其功能说明如表1所列。不同模块对应的源文件均是以模块名称命名的,例如累加器A对应的源文件为oc8051_acc.v。

OC8051 IP核结构

系统主要模块及其功能说明

  虽然上述OC8051 IP核宣称兼容所有8051指令系统,但是实际执行时并非如此。例如在执行表2所列的2组功能相同的代码时,所得到的执行结果并不相同。代码1的执行结果是将5写入地址为0的外部RAM,代码2的执行结果是将5写入地址为4的外部RAM。造成这种现象的原因是,oc8051_ext_addr_sel模块配置写外部RAM地址时延误了一个时钟周期。若要OC8051 IP核与标准8051系统一致,须对源文件中类似的逻辑错误进行修改。

2组功能相同的代码

  2 OC805 1仿真调试及修改

  对于硬件设计而言,仿真的作用是验证设计结果的逻辑功能是否符合初始规定,如果在这一层次上设计出了问题,那么以后各个层次的工作将完全不确定。由前文可知,OC8051 IP核存在着逻辑错误,所以有必要通过仿真的手段实现错误查找和定位,从而最终完成对逻辑错误的修改。

  2.1 仿真调试方案

  OC8051仿真调试方案如图2所示。其原理是:在Keil软件环境中编写测试程序,编译生成.hex文件并将其注入ROM的指令寄存器中。testbench负责产生OC8051工作时钟及控制使能等信号,并将OC8051执行ROM中指令的结果输出到文本/波形文件中。开发人员通过对文本/波形文件和Keil调试工具执行测试程序的结果进行比较,从而实现对逻辑错误的查找与定位,并对IP核源文件进行修改。

OC8051仿真调试方案

  值得注意的是,虽然Modelsim功能强大,可以方便地观察到任何层次模块信号的变化,但是OC8051 IP核的结构和时序比较复杂,仍避免不了仿真时因为中间信号多所带来的不便。因此,在仿真调试时可寻求一些简化操作的机制。考虑到借助数据寄存器指针DPTR和累加器A,MOVX指令可以将程序执行过程中任何寄存器的值输出到外部RAM中,而观察外部RAM中的值相对容易,因而本文采用了这种机制。[page]

  2.2 具体修改方法

  (1)oc805 1_ext_addr_sel模块

  读写外部RAM地址可以由DPTR指示,也可以由Ri指示,该模块的主要功能是选择读写外部RAM地址。通过select和write信号完成对buff和state的配置,从而完成对读写外部RAM地址addr_out的配置。在Modelsim环境中,执行表1中的代码1时,发现addz_out的变化总是比DPTR慢一个时钟周期,因而其执行结果是将5写入地址为0的外部RAM。造成这种现象的原因是配置buff和state时采用了always进程,本文将该部分代码修改为:

  assign state="write";

  asstgn buff="select"?{8h00,ri}:{dptr_hi,dptr_lo};

  (2)oc8051_psw模块

  该模块由一个8位标志寄存器及其控制逻辑组成,用来收集指令执行后的有关状态。8位寄存器的各位状态通常是在指令执行过程中自动形成,但也可以由用户根据需要采用传送指令加以改变。原设计中负责解释传送指令的逻辑采用if语句:

  if(addr[7:3]==\'OC8051_SFR_B_ACC)data_out[addr[2:O]]<=cy_in;

  \'OC8051_SFR_B_ACC被定义为累加器A的高5位地址,用在这里显然不对。应该将其改为程序状态字PSW的高5位地址\'OC8051_SFR_B_PSW。

  (3)OC8051_alu模块

  该模块是一个性能极强的运算器,不但可以进行四则运算和逻辑运算,而且具有数据传送、移位、程序转移等功能。其中,程序转移功能是当遇到短转移指令SJMlE’或变址转移指令JZ、CJNE、DJNZ等时,改变程序计数器PC的值,对应原设计为always进程中的\'OC8051_ALU_PCS分支。其代码如下:

程序

  输入src3为PC[15:8],src2为PC[7;0],src1为目标转移地址rel。需要注意的是,rel是以立即数形式存在的,且为补码格式(补码数的加减法运算统一为加法运算)。若src1[7]=1\'b1成立,则rel为一负数,对应转移指令是往前转移;否则,往后转移。当rel为负数时,原设计仅考虑了:PC[7:0]≥| rel |的情况,其对目标地址{des1,des2}的处理不全面;当PC[7:0]<|rel|时,des2=src2+src1为负数,借位会对des1产生影响,因而应有des1=src3-8\'h1。因此,将该部分代码修改为:

程序

  其中c是借位标志位,用来标识程序转移时PC[7:0]对PC[15:8]的影响。

  (4)oc8051_decoder模块

  该模块用于对指令译码。其设计思想是,分析当前输入信号op_in和所处状态state,把指令的功能配置为其他模块的控制信号,并得出下一个状态。因为各指令的指令周期不同,所以每条指令译码执行状态也各有不同。模块主体由状态机构成,在每个状态下对状态机不同的执行状态进行条件判断嵌套,以此实现对不同指令的多路选择。对模块仿真时发现,执行如DJNZ、JB、CLR等指令的结果不正确,其原因是在某些状态下对某些指令的译码有误,主要表现为配置了错误的控制信号。对模块修改结果如表3所列。

对模块修改结果[page]

  2.3 仿真结果

  程序执行方式是单片机的基本工作方式,通常可以分为单步执行和连续执行两种。事实上,2.2小节中的具体修改方法正是结合这两种工作方式实现的。数据加密标准(DES)是著名的对称密钥分组密码,由美国标准FIPS 46-2定义。基于8051指令系统,DES的软件实现难度不大,但它是对OC8051 IP核工作能力的一次综合检验。采用DEs标准测试向量:

  密钥K=1A624C89520DEC46

  明文P=748502CD38451097

  密文C=DD0CFEB783CF3FDE

  结合图2所示的仿真调试方案,Modelsim环境中OC8051执行DES的仿真结果如图3所示。

Modelsim环境中OC8051执行DES的仿真结果

  3 基于FPGA的下载测试

  利用FPGA对其功能进行了验证。选用Altera公司的EP2C35F672C6型号FPGA开发板,含有33 216个逻辑单元(LE)、丰富的存储器(RAM)和4个锁相环(PLL)。采用QuartusII软件,OC8051 IP核综合后占用3 917个逻辑单元,时钟频率最高达到30.81 MHz,FPGA测试的实际频率为27 MHz。

  利用QuartusII对OC8051 IP核综合、布局布线后,采用JTAG方式将配置文件下载至FPGA中,测试程序仍采用DES算法程序。In-System Memory ContentEditor是QuartusII提供的一个可在线操作FPGA片上RAM内容的工具,通过JTAG方式,用户可以查看和修改RAM中的内容。如果用户设计对RAM中的内容进行了修改,需要查看修改后的结果是否为所期望的,则使用该工具最为方便。OC8051 IP核外部RAM中的数据可以通过该工具方便地操作,所以本文对DES测试向量的输入和输出都是通过它来完成的,如图4所示。

OC8051执行DES的测试结果

  FPGA下载测试结果表明,OC8051工作正常,与仿真结果一样,测试程序运行正确。

  结 语

  本文介绍了一种OC8051 IP核的仿真测试方案。该方案给出了查找与定位IP核中逻辑错误的方法,并详细介绍了各种错误的修改方法。测试结果表明,OC8051工作正常,已经初步具备了微控制器的功能,可以被运用于实际的工程开发中。

关键字:FPGA  OC8051  IP核 引用地址:在FPGA上对OC8051IP核的修改与测试

上一篇:一种出租车计价器的FPGA设计方案及应用
下一篇:对FPGA中SPI复用配置的编程方法的研究

推荐阅读最新更新时间:2024-05-02 20:58

基于PC和FPGA的运动控制系统
运动控制系统被广泛地运用于各个领域。传统的运动控制系统设计有基于PC的中央控制方式和基于微控制器的嵌入式控制方式等。基于PC的运动控制方式,由于其采用多任务操作系统,对处理器的分时复用会导致在运行高速度和高控制频率的系统时,实时性得不到保证。而基于微控制器的运动控制系统,由于处理器资源有限,对功能复杂系统的开发带来很大难度,往往系统中的某个子功能模块就占用了整块芯片的资源。 随着计算机技术与嵌入式技术的日益发展,出现了各种架构互异的运控系统设计方案,其目标都在于对系统的高速度与高精度的不断追求。基于这两种技术,本文提出了一种基于PC+FPGA的多功能主从式运动控制结构,实现运控系统的分工。既满足了系统的功能多样性需求,又保证了
[嵌入式]
Nios II的LlED显示屏控制器设计
引言 目前,LED大屏幕显示系统按数据传输方式分为两类:一是同步实时显示,即计算机显示系统的内容同时在LED视频显示屏上显示;二是异步通信更新数据显示,计算机通过USB、通用串行接口、以太网等通信方式将数据传送给独立视频源显示屏。通常,异步通信控制方式只能将屏幕作为一个完整的区域显示,对于较大屏幕的显示系统,有时需要将整屏分为若干个窗口分别显示不同的内容,且内容的更新只是某一个或几个窗口。针对这种情况,本文提出了一种基于Nios II 32位处理器的设计方案,能有效地实现单屏幕多窗口的任意位置显示,使得显示方式更加灵活方便。 1 系统总体设计 1.1 系统硬件结构 LED显示系统主要由计算机系统、数据通信传输模块、数据处
[电源管理]
Nios II的LlED显示屏控制器设计
基于FPGA的简易可存储示波器设计
引言 传统的示波器虽然功能齐全,但是体积大、重量重、成本高、等一系列问题使应用受到了限制。有鉴于此,便携式数字存储采集器就应运而生,它采用了LCD显示、高速A/D采集与转换、ASIC芯片等新技术,具有很强的实用性和巨大的市场潜力,也代表了当代电子测量仪器的一种发展趋势,即向功能多、体积小、重量轻、使用方便的掌上型仪器发展。 系统组成结构及工作原理 系统的硬件部分为一块高速的数据采集电路板。它能够实现双通道数据输入,每路采样频率可达到60Mbit/s。从功能上可以将硬件系统分为:信号前端放大及调理模块、高速模数转换模块、FPGA逻辑控制模块、单片机控制模块、USB数据传输模块、液晶显示和键盘控制等几部分,其结构形式如图1所示。
[嵌入式]
Spartan-3A 的 DDR 2 接口数据采集
1 引言 DDR2(Double Data Rate2)SDRAM是由JEDEC(电子设备工程联合委员会)制定的新生代内存技术标准,它与上一代DDR内存技术标准最大的不同:虽然采用时钟的上升/下降沿同时传输数据的基本方式,但DDR2却拥有2倍的DDR预读取能力(即4位预存取技术)。此外,DDR2还增加ODT(内建核心终结电阻器)功能,内建合适的终结电阻,避免了以往因片外连接大片终结电阻带来的制板成本增加。 基于FPGA的SDRAM控制器,以高可靠性、强可移植性、易于集成的特点,逐渐取代以往的专用控制器而成为主流解决方案。本文采用Xilinx公司的Spartan-3A系列FPGA和Hynix公司的DDR2 SDRAM器件HY5P
[嵌入式]
Spartan-3A 的 DDR 2 接口数据采集
基于FPGA/MCU结构的线性调频高度表
  1 引言 无线电高度表不仅可以精确测量飞行器与地面或海面的相对高度,而且还可以测量地表 粗糙度、海洋波浪高度等多种参数,在飞机的自动着陆、自动导航、地形匹配等领域得到了 广泛的应用。无线电高度表主要分为调频连续波体制和脉冲体制两种,调频连续波体制适合 1500m 以内的低高度应用,脉冲体制适合1500m 以上的中高高度应用。本文介绍了一种基于 FPGA/MCU 结构的线性调频(LFMCW)连续波高度表,具有精度高,结构简单,可靠性高,成 本低等特点。   2 工作原理   线性调频连续波高度表的基本原理为 :采用三角波线性调频微波振荡源,经发射天线 辐射等幅调频波,经过与飞行器飞行高度成正比例的时间延迟τ,由地面发射并
[单片机]
基于<font color='red'>FPGA</font>/MCU结构的线性调频高度表
基于FPGA的步进电机控制系统的设计方案
0 引言 步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,输入脉冲总数控制步进电机的总旋转角度,电机的速度由每秒输入脉冲数目所决定,因此易实现机械位置的精准控制。而且由于步进电机价格低廉、可控性强等特点,使其在数控机床传送控制等自动控制领域中得到了广泛的应用。但随着技术的发展以及企业生产的要求,步进电机传统的以单片机等微处理器为核心单元的控制系统暴露出了如下缺点:控制策略单一不利于实现人机交互,而且控制电路复杂、控制精度低、生产成本高,系统稳定性不够,步进分辨率低、缺乏灵活性,低频时的振荡和噪声大,而且受步进电机机械结构和空间的限制,步进电机的步距角不可能无限的小,难以满足高精度开环控制的需求。由于FPGA编程方式简单
[嵌入式]
基于SOPC的运动视觉处理系统的设计与实现
引言   随着深亚微米工艺的发展, FPGA的容量和密度不断增加,以其强大的并行乘加运算(MAC)能力和灵活的动态可重构性,被广泛应用于通信、图像等许多领域。但是在复杂算法的实现上,FPGA不如嵌入式处理器方便,所以在设计具有复杂算法和控制逻辑的系统时,往往需要和嵌入式处理器结合使用,这就是 SOPC(System on a Programmable chip,可编程片上系统)技术。 SoPC是 SoC和 FPGA结合的产物,由单个可编程重构的芯片完成整个系统的主要功能。SoPC设计灵活多变,可以用原理图,硬件描述语言甚至是 C/C++高级语言进行设计;同时还具有可重构、可裁减、可扩充等特点,升级方便。 SoPC兼备 SoC和
[安防电子]
基于SOPC的运动视觉处理系统的设计与实现
FPGA与SRAM相结合完成大容量数据存储
1 引言 随着数字信号处理技术的不断发展,大容量可编程逻辑器件的不断涌现,FPGA技术越来越多地应用在大规模集成电路设计中。在此硬件系统设计中,经常会遇到需要大容量的数据存储的情况,下面我们将针对FPGA中内部Block RAM有限的缺点,提出了将FPGA与外部SRAM相结合来改进设计的方法,并给出了部分VHDL程序。 2 硬件设计 这里将主要讨论以Xilinx公司的 FPGA(XC2S600E-6fg456)和ISSI公司的SRAM(IS61LV25616AL)为主要器件来完成大容量数据存储的设计思路。 FPGA即现场可编程门阵列,其结构与传统的门阵列相似,大量的可编程逻辑块(CLB, Configurable Logic
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved