CN102096725A - 一种基于fpga的仿真器 - Google Patents
一种基于fpga的仿真器 Download PDFInfo
- Publication number
- CN102096725A CN102096725A CN2009102003056A CN200910200305A CN102096725A CN 102096725 A CN102096725 A CN 102096725A CN 2009102003056 A CN2009102003056 A CN 2009102003056A CN 200910200305 A CN200910200305 A CN 200910200305A CN 102096725 A CN102096725 A CN 102096725A
- Authority
- CN
- China
- Prior art keywords
- fpga
- emulator
- control signal
- control module
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明提供了一种基于FPGA的仿真器,该仿真器耦接于计算机装置与用户接口,所述仿真器包括:控制单元,设置在FPGA中,通过USB通信接收计算机装置传来的第一控制信号,并根据第一控制信号产生并输出第二控制信号;存储单元,耦接至控制单元,根据第二控制信号存储用户程序;以及仿真单元,设置在FPGA中,耦接至控制单元,用以接收控制单元传来的第二控制信号,根据第二控制信号和用户接口的输入数据产生相对应的仿真结果,并将仿真结果输出至所述用户接口。该仿真器不但继承了真实性的优点而又避免了流片风险,而且缩短了开发周期,降低了开发成本。
Description
技术领域
本发明涉及仿真器,具体涉及一种基于FPGA的仿真器。
背景技术
当前,基于MCU(微控制器)开发的产品在诸如计算器、遥控器、语音编码、家电控制及各类玩具电路消费电子领域里已经占据绝大部分。产品的生命周期长,市场前景广阔。但是,微控制器的开发和应用离不开基于该微控制器的仿真器。
在计算器领域中,微控制器CS6088与一般的通用MCU相比,它具有结构简单,成本低廉,功耗低等特点。CS6088是一款专用于计算器开发的伪指令MCU,程序存储器地址宽度12bit,有效地址空间为0x000-0xBFF,它没有通常MCU都有的自动递增的程序指针寄存器,而是通过每条指令中的操作数给出下条指令的地址信息,共有6种寻址方式(CS6088的寻址方式是指指令地址信息的模式,而非通常MCU中对数据RAM的寻址):
a)全地址直接寻址:该寻址方式12bit地址全部由指令操作数给出。
b)全地址间接寻址:该寻址方式的AD<9:6>这4位地址由寄存器数据给出,其余8位地址在指令操作数中。
c)高位固定全地址寻址:该寻址方式的AD<9:6>4位地址固定为全1,由指令操作数给出其余8bit地址。
d)页内地址寻址:该寻址方式由指令操作数给出低6bit地址,高6bit地址不变。这是最常用的寻址方式。
e)按键扫描寻址:该寻址方式用于WTK指令,高6bit地址不变,低6bit地址由指令操作数和按键扫描结果共同决定。
f)条件跳转寻址:该寻址方式用于条件跳转指令,高6bit地址不变,低6bit地址由指令操作数和和累加器输出的C/Z标志共同决定(其中减法指令C/Z同时判断,加法指令只判断C)。
由此可以看到,CS6088的每条指令实际上都带跳转功能,但除了全地址直接寻址模式,指令中并不直接给出所有地址数据,每种寻址模式对地址都有不同的限制,指令不能象通常MCU指令那样简单的顺序排放,给编程工作带来很大困难,地址的规划分配繁琐而易错,程序的更改牵一发动全身,极为不便。目前没有现成的开发工具可以用于该芯片软件的开发,因此设计一款CS6088专用仿真工具成为当务之急。
发明内容
本发明要解决的技术问题是提供一种基于FPGA的仿真器,通过FPGA芯片来模拟Bond out MCU并实现微控制芯片CS6088的仿真功能。该仿真器继承了真实性的优点而又避免了流片风险,缩短了开发周期,降低了开发成本。
为解决上述技术问题,本发明提供的一种基于FPGA的仿真器,所述仿真器耦接于计算机装置与用户接口,所述仿真器包括:控制单元,设置在FPGA中,通过USB通信接收所述计算机装置传来的第一控制信号,并根据所述第一控制信号产生并输出第二控制信号;存储单元,耦接至所述控制单元,根据所述第二控制信号存储用户程序;以及仿真单元,设置在FPGA中,耦接至所述控制单元,用以接收所述第二控制信号,根据所述第二控制信号和所述用户接口的输入数据产生相对应的仿真结果,并将所述仿真结果输出至所述用户接口。
进一步地,所述仿真单元装有芯片CS6088的仿真网表,实现针对芯片CS6088的仿真功能。所述仿真单元具有实现FIFO的功能结构。所述存储单元包括Flash单元和SRAM单元两部分。当所述仿真器处于仿真阶段时,所述第二控制信号控制所述用户程序存入所述SRAM单元;当用户希望所述仿真器进行脱机运行时,所述第二控制信号控制所述用户程序存入所述Flash单元。当所述控制单元检测到与所述计算机装置分离时,所述仿真器复位并运行所述Flash中的所述用户程序;当所述控制单元检测到与所述计算机装置正常连接时,结束脱机运行。所述用户接口包括键盘和LCD。所述输入数据由用户控制键盘的输入产生。所述LCD接收并显示所述仿真结果。
本发明的一种基于FPGA的仿真器有以下有益的效果:
1)使用USB通信,速度更快;
2)一般通用MCU的I/O端口超过50个时,需要在仿真器设计中需要加入端口扩展电路,本仿真器的控制芯片使用FPGA设计,针对仿真器控制的特点,设计了100多个控制I/O端口,无需另外加端口扩展,外围电路极其简单,增加了电路工作可靠性;
3)本仿真平台使用FPGA芯片来模拟Bond out MCU,继承了真实性的优点而又避免了流片风险,缩短了开发周期,降低了开发成本;
4)针对CS6088指令特点开发的编译器,实现灵活的地址分配,简化用户编程工作。
附图说明
图1本实施例中提供的一种基于FPGA的仿真器的示意图。
图2本实施例中提供的一种基于FPGA的仿真器的硬件功能结构。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
本实施例提供了一种基于FPGA的仿真器,如图1所示,包括计算机装置1、仿真器2、存储单元3和用户接口4。仿真器2包括控制单元21,设置在FPGA中,通过USB通信接收计算机装置1传来的第一控制信号,并根据第一控制信号产生并输出第二控制信号;存储单元3,耦接至控制单元21,根据第二控制信号存储用户程序;以及仿真单元22,设置在FPGA中,耦接至控制单元21,用以接收控制单元21传来的第二控制信号,根据第二控制信号和用户接口4的输入数据产生相对应的仿真结果,并将仿真结果输出至用户接口4。
本实施例的仿真器属于bond-out MCU,所谓的bond-out MCU是指芯片设计公司为实现其商用MCU的仿真功能,将内部的数据,地址及控制总线连接到芯片封装的管脚上,使得外部仿真逻辑可以监视和控制MCU内部的状态。bond-out MCU内部具有特殊的配合仿真的时序。当进入仿真状态后,可以冻结内部的时序运行,可以查询、修改在静止时单片机内部的资源。
进一步地,本实施例的仿真器基于FPGA开发出来的,该FPGA的开发涉及到应用软件和底层软件以及硬件的开发,对于应用软件,采用VC平台全面正向开发,整个软件最终以安装版的方式向用户提供,用户可以在此软件上,编辑、编译自己的源程序。此外,针对CS6088芯片特点,自定义了ADDR伪指令以便分支程序编写,编译软件对用户程序经过六次遍历处理,根据地址定义伪指令和指令寻址方式自动为用户程序分配地址,大大简化了编程工作。
如图2所示,本实施例所提供的仿真器2的硬件由控制板和仿真板两块板组成,用两个双排针插座连接,外观简捷。仿真板的核心是一片装入CS6088仿真网表的FPGA,除了实现CS6088功能还增加了FIFO设计,用于仿真过程中的程序跟踪功能;控制板的核心也是一片FPGA,装载为仿真控制专门开发的MCU软核,其作用相当于MCU芯片,使用FPGA的好处是控制管脚多,因为仿真芯片的控制管脚(包括地址、数据总线以及内部控制信号引脚)多达上百个,如果使用普通MCU,势必要增加端口扩展电路,增加电路复杂度和开发成本。除了FPGA,主控板上还有两片16位并行SRAM用于装载用户程序和设置断点。为实现脱机运行功能,主控板上还安装了两片16位并行FLASH,用户程序仿真通过后可以直接写入FLASH,然后脱离PC控制独立运行,进行最终的用户DEMO板系统验证。与一般单片机仿真器相比,本实施例所提供的仿真器2具有针对功能全面的应用软件支持,硬件上使用FPGA作为控制芯片和仿真芯片,支持无限制断点设置,1K程序跟踪功能,和脱机运行模式,仿真过程不会占用任何资源,仿真全面真实。
本实施例所提供的一种基于FPGA的仿真器分为软件部分和硬件部分,其具体包括:
1)软件部分:
整个软件的运行环境为WINDOWS9X或以上的操作系统,软件的开发采用Visual C++6.0集成开发环境。采用多文档多视图框架结构,主要实现的功能分编译和仿真两部分。
实现编译功能的函数是Build(),它对用户程序进行六次遍历处理,最后生成目标代码和列表文件,在此过程中它调用了仿真器软件中的应用程序函数LineAnalyse()、CompileLine()、WriteLstFile()、WriteObjFile()等子函数,其中LineAnalyse()为行分析函数,第一次遍历用户程序时调用,主要功能是去除空格、注释等无用信息,提取地址标识、指令助记符、操作数;第二次遍历时检查地址标号合法性;第三次遍历时处理EQU伪指令;第四次遍历时处理ADDR伪指令,在ADDR定义的分支程序前插入地址锁定伪指令;第五次遍历时进行地址分配并调用CompileLine(),即行编译函数,检测每行用户程序的指令助记符,根据指令定义进行译码;第六次遍历再次调用CompileLine(),专门处理跳转指令的编译。在第五次和第六次遍历时还将调用WriteLstFile()和WriteObjFile()函数将编译过程中获得的地址、行数、机器码等信息写入列表文件和目标代码文件。
在编译函数中地址分配功能是专门针对CS6088指令特色而实现的,与普通MCU不同,CS6088的程序指针没有自增功能,每条指令都需要指定下条指令地址,而条件跳转指令对地址还有特殊要求,如果完全由用户手工设置,不仅繁琐,编写的程序可读性也很差。为此,编译函数增加地址分配功能,用户除了在必要情况下用地址锁定伪指令指定指令地址外,可以不必考虑地址安排,按逻辑顺序编写程序。地址分配的实现过程是先分配地址锁定伪指令指定的指令地址,然后分配条件跳转指令以及跳转目标指令的地址,最后分配剩余指令地址,一般按递增方式分配,同时查验页溢出错误。
软件的仿真功能通过一系列菜单响应函数完成,仿真功能菜单主要包括复位、单步、连续运行、自由运行、停止运行、运行到光标、断点设置、显示程序跟踪信息,其响应函数根据通讯协议将命令和参数传递给USB通讯子函数,从PC机的USB端口发送给仿真器控制板。除此之外,界面上显示的寄存器数据的更改和更新也同样通过调用USB通讯子函数进行。
2)硬件部分:
如图2的原理框图,本实施例所提供的仿真器2由两块PCB板组成,包括控制板和仿真板,控制板集成了存储单元3、控制单元21,用于USB通信的USB接口和USB驱动模块和用于控制时钟信号的有源晶振。控制单元21,设置在FPGA中,其内部功能结构包括有8微控制器、程序空间、数据空间、I/O端口、数据/地址总线、定时器1、定时器2以及中断单元。存储单元3包括Flash单元31和SRAM单元32。仿真板集成了仿真单元22和用户接口4,仿真单元的内部功能结构包括时钟控制、CS6088内核、FIFO、数据空间、数据/地址总线、键盘扫描驱动和LCD驱动。用户接口4包括键盘和LCD显示装置。该仿真器工作过程如下:
a.进入调试
控制单元21内部的8位微控制器通过内部数据/地址总线访问程序空间和数据空间,运行控制程序;当连接计算机装置1的USB总线时,与USB驱动模块连接的I/O端口发出中断请求到中断模块,8位微控制器处理中断,与计算机装置1建立通信,定时器2控制通信过程中的延时。当控制单元21接收到联机命令,向计算机装置1返回仿真器2的型号信息;定时器1输出170KHz方波信号作为仿真芯片主时钟输出到仿真单元22时钟控制模块,I/O端口输出时钟控制信号高电平到仿真单元22时钟控制模块,使时钟控制模块停止时钟输出,CS6088CPU内核处于运行停止状态,仿真器2进入调试。
b.下载用户程序
控制单元21从USB端口接收到下载命令,根据命令参数设置存储单元3片选、读写控制线,选择FLASH单元31或SRAM单元32,在仿真阶段将用户程序写入SRAM单元32,当用户程序已调试通过,希望进行脱机运行验证时,可将用户程序写入FLASH单元31。控制单元21将USB端口接收到的用户程序数据从程序数据/地址总线输出,写入FLASH单元31或SRAM单元32。
c.调试用户程序
当控制单元21通过USB端口从计算机装置1接收到复位命令,从I/O端口输出时钟控制信号低电平使能仿真单元22内部时钟,同时输出复位信号,复位完成后输出时钟控制信号高电平,停止仿真单元22运行。
当控制单元21通过USB端口从计算机装置1接收到运行命令,从I/O端口输出时钟控制信号低电平使能仿真单元22内部时钟,设置存储单元3片选、控制信号,选择SRAM作为程序存储器输出;CS6088CPU内核通过程序数据/地址总线访问SRAM单元32,运行用户程序,在运行用户程序过程中,用户可通过用户接口4输入按键、观察LCD显示输出。同时,控制单元21输出FIFO控制信号使能FIFO写操作,在仿真单元22运行期间,将程序地址存入FIFO。
当控制单元21通过USB端口从计算机装置1接收到暂停运行命令,输出时钟控制信号高电平停止仿真芯片内部时钟,CS6088CPU内核停止运行。
当控制单元21接收到寄存器读写命令,通过数据/地址总线直接访问仿真单元22的数据空间,完成读写操作。
当控制单元21接收到读取程序跟踪信息命令,输出FIFO控制信号使能FIFO读操作,将仿真单元运行期间存入FIFO的程序地址读出,最多可以回溯1024条指令地址。
d.脱机运行
首先必须保证用户程序已写入FLASH单元31,然后才可以进入脱机运行。
当控制单元21检测到USB端口从计算机装置1脱离,自动进入脱机运行状态,设置存储单元3片选、控制信号,选择FLASH作为程序存储器输出,输出时钟控制信号低电平使能仿真单元22时钟,设置复位信号,置低40ms后再置高。仿真单元22开始脱机运行FLASH中的用户程序。
当仿真器2与USB重新连接,控制单元21检测到正常连接信号,输出时钟控制信号高电平,停止仿真单元22运行,结束脱机运行。
在不偏离本发明的精神和范围的情况下还可以构成许多有很大差别的实施例。应当理解,除了如所附的权利要求所限定的,本发明不限于在说明书中所述的具体实施例。
Claims (9)
1.一种基于FPGA的仿真器,所述仿真器耦接于计算机装置与用户接口,其特征在于,所述仿真器包括:
控制单元,设置在FPGA中,通过USB通信接收所述计算机装置传来的第一控制信号,并根据所述第一控制信号产生并输出第二控制信号;
存储单元,耦接至所述控制单元,根据所述第二控制信号存储用户程序;以及
仿真单元,设置在FPGA中,耦接至所述控制单元,用以接收所述第二控制信号,根据所述第二控制信号和所述用户接口的输入数据产生相对应的仿真结果,并将所述仿真结果输出至所述用户接口。
2.如权利要求1所述的一种基于FPGA的仿真器,其特征在于,所述仿真单元装有芯片CS6088的仿真网表,实现针对芯片CS6088的仿真功能。
3.如权利要求1或2所述的一种基于FPGA的仿真器,其特征在于,所述仿真单元具有实现FIFO的功能结构。
4.如权利要求1所述的一种基于FPGA的仿真器,其特征在于,所述存储单元包括Flash单元和SRAM单元两部分。
5.如权利要求1所述的一种基于FPGA的仿真器,其特征在于,所述用户接口包括键盘和LCD。
6.如权利要求2所述的一种基于FPGA的仿真器,其特征在于,当所述仿真器处于仿真阶段时,所述第二控制信号控制所述用户程序存入所述SRAM单元;当用户希望所述仿真器进行脱机运行时,所述第二控制信号控制所述用户程序存入所述Flash单元。
7.如权利要求5所述的一种基于FPGA的仿真器,其特征在于,当所述控制单元检测到与所述计算机装置分离时,所述仿真器复位并运行所述Flash中的所述用户程序;当所述控制单元检测到与所述计算机装置正常连接时,结束脱机运行。
8.如权利要求5所述的一种基于FPGA的仿真器,其特征在于,所述输入数据由用户控制键盘的输入产生。
9.如权利要求5所述的一种基于FPGA的仿真器,其特征在于,所述LCD接收并显示所述仿真结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102003056A CN102096725A (zh) | 2009-12-11 | 2009-12-11 | 一种基于fpga的仿真器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102003056A CN102096725A (zh) | 2009-12-11 | 2009-12-11 | 一种基于fpga的仿真器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102096725A true CN102096725A (zh) | 2011-06-15 |
Family
ID=44129820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102003056A Pending CN102096725A (zh) | 2009-12-11 | 2009-12-11 | 一种基于fpga的仿真器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102096725A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567202A (zh) * | 2011-12-22 | 2012-07-11 | 广州中大微电子有限公司 | 基于fpga的双界面智能卡仿真器 |
CN104077204A (zh) * | 2014-07-22 | 2014-10-01 | 无锡中微爱芯电子有限公司 | 可重构的8位rsic单片机仿真器 |
CN104346207A (zh) * | 2013-07-31 | 2015-02-11 | 上海华虹集成电路有限责任公司 | 仿真器 |
CN105573812A (zh) * | 2014-10-09 | 2016-05-11 | 上海华虹集成电路有限责任公司 | 一种仿真系统 |
CN105573924A (zh) * | 2014-10-09 | 2016-05-11 | 上海华虹集成电路有限责任公司 | 仿真系统 |
CN106528459A (zh) * | 2016-11-16 | 2017-03-22 | 苏州华芯微电子股份有限公司 | 一种基于fpga的mcu仿真器的io转换方法及系统 |
CN109144036A (zh) * | 2018-10-22 | 2019-01-04 | 江苏艾科半导体有限公司 | 一种基于fpga芯片的机械手模拟测试系统及测试方法 |
CN109948306A (zh) * | 2019-05-05 | 2019-06-28 | 无锡矽杰微电子有限公司 | 集成化的仿真系统 |
WO2021109367A1 (zh) * | 2019-12-06 | 2021-06-10 | 国微集团(深圳)有限公司 | 数字产品的仿真信号查看方法及系统 |
-
2009
- 2009-12-11 CN CN2009102003056A patent/CN102096725A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567202A (zh) * | 2011-12-22 | 2012-07-11 | 广州中大微电子有限公司 | 基于fpga的双界面智能卡仿真器 |
CN104346207A (zh) * | 2013-07-31 | 2015-02-11 | 上海华虹集成电路有限责任公司 | 仿真器 |
CN104077204A (zh) * | 2014-07-22 | 2014-10-01 | 无锡中微爱芯电子有限公司 | 可重构的8位rsic单片机仿真器 |
CN104077204B (zh) * | 2014-07-22 | 2016-01-27 | 无锡中微爱芯电子有限公司 | 可重构的8位rsic单片机仿真器 |
CN105573924B (zh) * | 2014-10-09 | 2018-06-19 | 上海华虹集成电路有限责任公司 | 仿真系统 |
CN105573812A (zh) * | 2014-10-09 | 2016-05-11 | 上海华虹集成电路有限责任公司 | 一种仿真系统 |
CN105573924A (zh) * | 2014-10-09 | 2016-05-11 | 上海华虹集成电路有限责任公司 | 仿真系统 |
CN106528459A (zh) * | 2016-11-16 | 2017-03-22 | 苏州华芯微电子股份有限公司 | 一种基于fpga的mcu仿真器的io转换方法及系统 |
CN109144036A (zh) * | 2018-10-22 | 2019-01-04 | 江苏艾科半导体有限公司 | 一种基于fpga芯片的机械手模拟测试系统及测试方法 |
CN109144036B (zh) * | 2018-10-22 | 2023-11-21 | 江苏艾科半导体有限公司 | 一种基于fpga芯片的机械手模拟测试系统及测试方法 |
CN109948306A (zh) * | 2019-05-05 | 2019-06-28 | 无锡矽杰微电子有限公司 | 集成化的仿真系统 |
CN109948306B (zh) * | 2019-05-05 | 2024-02-02 | 无锡矽杰微电子有限公司 | 集成化的仿真系统 |
WO2021109367A1 (zh) * | 2019-12-06 | 2021-06-10 | 国微集团(深圳)有限公司 | 数字产品的仿真信号查看方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102096725A (zh) | 一种基于fpga的仿真器 | |
CN101344899B (zh) | 一种片上系统的仿真测试方法及仿真测试系统 | |
CN102968311B (zh) | 机载嵌入式软件开发平台 | |
Wulf et al. | Overview of the Hydra operating system development | |
CN102087609B (zh) | 多处理器平台下的动态二进制翻译方法 | |
CN103309792A (zh) | 一种日志信息的控制方法及系统 | |
CN105137800A (zh) | 一种基于sopc技术的plc协同控制装置 | |
CN104516765A (zh) | 计算机和编译方法 | |
Ceng et al. | A high-level virtual platform for early MPSoC software development | |
CN104156234A (zh) | 启动多核处理器、bootloader大小端模式自适应的方法及装置 | |
CN103853147A (zh) | 一种嵌入式系统的在线调试系统及方法 | |
Kant | Microprocessors and Microcontrollers: Architecture, Programming and System Design 8085, 8086, 8051, 8096 | |
Engblom et al. | Full-system simulation from embedded to high-performance systems | |
CN102331961B (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
Lai et al. | Fast profiling framework and race detection for heterogeneous system | |
CN102193860B (zh) | 微控制器在线调试电路及方法、微控制器 | |
CN100517265C (zh) | 一种微控制器仿真系统 | |
Korbel et al. | Interesting applications of Atmel AVR microcontrollers | |
Willenberg et al. | Simulation-based HW/SW co-debugging for field-programmable systems-on-chip | |
CN209055818U (zh) | 一种通用时序生成装置 | |
Li | Computer embedded automatic test system based on VxWorks | |
CN106020800A (zh) | 一种基于数据库的模拟训练设备操作逻辑建模与驱动方法 | |
Parson et al. | A framework for simulating heterogeneous virtual processors | |
Cohen et al. | Android Application Development for the Intel Platform | |
Gopikrishna et al. | A multiprocessor system on chip verification on hardware accelerator and Software Emulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110615 |