门外汉,咨询大家一个有关fpga的问题
我们的目的是在fpga板子里嵌入M0,或者ARM7的内核,模拟出一个mcu。并且,这个mcu的内核在运行的时候,fpga还可以实现类似jtag一样的功能,可以跟踪,单步,断点等,观察控制下载在该内核中程序的,类似一个仿真器的功能。
背景是,我们用的一款芯片,厂商的片子不能提供在线调试的功能。我们想基于fpga做一个,既包含该芯片的内核,又能够实时调试的功能。
如果用fpga来做,是否可行,需要什么级别的片子,是否有推荐型号,厂商。
多谢大家!
可以看看直接内嵌硬核的FPGA,国产的有CME-M7(Cortex-M3+FPGA)
RT-Thread对此有支持 http://www.rt-thread.org/phpBB3/topic3787.html 要更高端的还有Zynq aozima 发表于 2014-11-4 14:50
要更高端的还有Zynq
谢谢aozima 的回复
我还想问一下,通用的fpga能否实现我说的功能呢?
背景是,我们用的一款芯片,厂商的片子不能提供在线调试的功能。我们想基于fpga做一个,既包含该芯片的内核,又能够实时调试的功能。
——————————————————————————————————————————————
如果不指定内核,估计还有可能,网上有开源的RISC,MIPS核。如果是指定的内核,那只能找厂家要代码了,比如说我想用FPGA生成一个intel I3核。。。。 实现个处理器倒是不需要多大的资源,Cortex-M0 DesignStart差不多是六千LUT,不过那个不带调试。
lz如果一定要做成ARM的话,他们指令集什么的应该是有专利不能随便商业用的吧。其他软核带调试的lz愿意用吗? 嵌入内核应该可以,之前嵌入过51的核,实时调试理论可行,自己写有点烦,不知道有没有公开的源码 K.O.Carnivist 发表于 2014-11-4 15:19
实现个处理器倒是不需要多大的资源,Cortex-M0 DesignStart差不多是六千LUT,不过那个不带调试。
lz如果一 ...
特殊应用只能用这个内核 go2deathward 发表于 2014-11-4 15:31
特殊应用只能用这个内核
那应该还是用带硬核的fpga比较方便吧。或者贵公司有钱直接找arm去买m0的fpga授权。 K.O.Carnivist 发表于 2014-11-4 15:41
那应该还是用带硬核的fpga比较方便吧。或者贵公司有钱直接找arm去买m0的fpga授权。 ...
带硬核的fpga有推荐吗?M0的内核即可 处理器的调试功能需要额外的逻辑进行支持。单纯的一个没有调试功能的软核,自己开发调试功能,工作量可能比重新设计一个带调试功能的软核大得多。
So,如果非要这个功能,
# 去ARM买个可综合的软核吧。。。
# 代码在别的M0芯片上调试的差不多了再运过来。。。
# 上RTOS,利用简单的服务程序实现一些非常简单的调试功能也是可以的。
想要M0内核直接去找ARM买,他们就是卖这个的 可以达到你所需要的要求,网上有51软核,M0软核,且有JTAG功能, yuyu87 发表于 2014-11-4 20:31
可以达到你所需要的要求,网上有51软核,M0软核,且有JTAG功能,
M0的也有吗?没有找到呢 go2deathward 发表于 2014-11-4 21:07
M0的也有吗?没有找到呢
ACTEL (现在是microsemi)有带M1、M3内核的FPGA ,国产京微雅阁也有带51、M3内核的 记得有本书兼容ARM9的软核处理器设计:基于FPGA 可以参考下 Codoox 发表于 2014-11-4 21:26
ACTEL (现在是microsemi)有带M1、M3内核的FPGA ,国产京微雅阁也有带51、M3内核的 ...
国产的这个片子,京微雅格的,用的人多吗?经得起考验不? go2deathward 发表于 2014-11-5 13:44
国产的这个片子,京微雅格的,用的人多吗?经得起考验不?
目前好像都是给企业客户供货,没用过不好说。ACTEL的质量肯定没问题,但价格可能不会太便宜。 ARM大学计划里,有M0的DesignStart Processor IP ,这个有谁下载过吗?
我注册申请了,需要2天才能有回应。。
谁如果有,我先拿来看看~~~~多谢了! go2deathward 发表于 2014-11-5 18:01
ARM大学计划里,有M0的DesignStart Processor IP ,这个有谁下载过吗?
我注册申请了,需要2天才能有回应 ...
那个没有debug的。接口是这样:
module CORTEXM0DS (
// CLOCK AND RESETS ------------------
inputwire HCLK, // Clock
inputwire HRESETn, // Asynchronous reset
// AHB-LITE MASTER PORT --------------
output wire HADDR, // AHB transaction address
output wire [ 2:0] HBURST, // AHB burst: tied to single
output wire HMASTLOCK, // AHB locked transfer (always zero)
output wire [ 3:0] HPROT, // AHB protection: priv; data or inst
output wire [ 2:0] HSIZE, // AHB size: byte, half-word or word
output wire [ 1:0] HTRANS, // AHB transfer: non-sequential only
output wire HWDATA, // AHB write-data
output wire HWRITE, // AHB write control
inputwire HRDATA, // AHB read-data
inputwire HREADY, // AHB stall signal
inputwire HRESP, // AHB error response
// MISCELLANEOUS ---------------------
inputwire NMI, // Non-maskable interrupt input
inputwire IRQ, // Interrupt request inputs
output wire TXEV, // Event output (SEV executed)
inputwire RXEV, // Event input
output wire LOCKUP, // Core is locked-up
output wire SYSRESETREQ, // System reset request
// POWER MANAGEMENT ------------------
output wire SLEEPING // Core and NVIC sleeping
);
里面代码是门级的,没有可读性。类似这样:
assign S8a2z4 = (~(Dmh2z4 & K1wvx4));
assign haddr_o = (!Jxovx4);
assign Jxovx4 = (Qea2z4 & Xea2z4);
assign Xea2z4 = (~(Ykh2z4 & Mrsvx4));
assign Qea2z4 = (Efa2z4 & Lfa2z4);
assign Lfa2z4 = (~(Gzvvx4 & Hxnvx4));
assign Hxnvx4 = (~(Sfa2z4 & Zfa2z4));
assign Zfa2z4 = (~(Wadvx4 & Jj9wx4));
assign Sfa2z4 = (Gga2z4 & Nga2z4);
assign Nga2z4 = (~(Vb9wx4 & Uga2z4));
assign Uga2z4 = (~(Bha2z4 & Iha2z4));
assign Iha2z4 = (Pha2z4 & Wha2z4); 可以做 但是前提是fpga不一定能跑到MCU的速度
而且用fpga的成本,不仅仅是指材料成本,设计成本远远高于MCU。如果你需要license IP的话,那成本更是离谱 多谢诸位的热心回复!!
页:
[1]