杂记:逆向一块FPGA核心板

这篇具有很好参考价值的文章主要介绍了杂记:逆向一块FPGA核心板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  最近太热了,实在无心看书。阵列书丢一边看不进去,还买了几本统计信号的甚至都没开始看(笑),躺在床上玩玩手机摆烂,看到某黄色APP上有老板卖拆机的板子,价格美丽,美中不足的是没有资料。大致跟老板确认了一下板子成色、来源就拍下来了,昨天正好到手里,今天寻思看看有没有可以折腾的可能。由于缺少相关资料,别说原理图了,连个管脚约束都没有,老老实实跑个逆向吧。

  其实买的时候很担心这个芯片是带锁的,但是我几乎没用听过有谁给Cyclone iv的芯片写fuse,这里小赌一把,焊了个牛角座浅试一把发现可以正常使用,赌博成功。由于我没有大功率的低压电源,这里从另一个FPGA板子上取电,测试发现FPGA功耗非常高,猜测应该把Transceiver全部用起来了,估计资源也起来了大半。


板载资源介绍

  板子正面的主要器件已经框出来了。

杂记:逆向一块FPGA核心板,杂记,fpga开发,逆向,nios

  红色框的是FPGA芯片,intel家里的,型号是EP4CGX110DF27I7。这个芯片资源可以,有109k个LE,5Mbit的memory bits,带8个锁相环。这个芯片带了8对收发器可以完成一些高速设计,不过我暂时应该用不到。其实这几年A家的芯片用的比较多,资料相当完善,但是I家的似乎没有那么丰富。

  橙色框的是美光的DDR SDRAM,这是一个第二代SDRAM,2.5V电源供电。而绿色框的芯片是LP2998,一个比较常见的VTT芯片,这个VTT芯片也可以为DDR3提供VTT电源。

杂记:逆向一块FPGA核心板,杂记,fpga开发,逆向,nios

  一般来说VTT芯片需要比较快速的瞬态响应以满足数据传输中电荷的Charge/Discharge,关于DDR的端接技术和相关设计可能以后会写点博文吧。目前我用的比较多的型号是TPS51200,这个VTT芯片在很多设计中都能看到。

杂记:逆向一块FPGA核心板,杂记,fpga开发,逆向,nios

  这张图是板上的46V32M16的内部框图,这是一个512Mbit的芯片,有4个bank,每个bank是8192x512的,对应行地址线是13条,列地址线10条(COL0是实现双边沿的),这个非常关键,后面使用DDR控制器的时候需要设置。这个板子上一共只有1个DDR非常遗憾,如果多点就好了。这个板子做做简单的图像处理,跑跑RISCV还是不成问题的。话说micron的手册写的真非常好,图也好看…在Cyclone iv FPGA中,只有位于TOP和BOTTOM BANK的DQ可以跑到150兆,用右侧的BANK只能跑到133兆,好在这个板子的DDR挂在BOTTOM。

  黄色框是一个LDO,这个LDO为FPGA内部模拟部分(PLL)供电,他的PSRR比较高可以提供比较干净的供电。蓝色框是一个128Bit的NOR FLASH,等效于EPCQ128,用于固化设计。草绿色的芯片是一个看门狗加上一个EEPROM,这个芯片可以提供上电复位和电源监控功能。


逆向

  观察板子发现,这个板子一共有4个连接器,每个连接器都是50x2P的,也就是拉了400个脚出来,全部测一遍工作量实在有些大。不过观察板子设计不难发现,设计者引出的全部都是差分对,如果我们一次能测得4个差分对,那么每跑一次就能得到8个pin。这里我采用的方法是让每个差分对的n输出一个特定频率的信号,利用频率分辨测得的4个管脚,这里手头刚还有一个之前做的选频表,这个东西本质是利用LTC1043制作的锁相放大器,刚好派上用场了。

杂记:逆向一块FPGA核心板,杂记,fpga开发,逆向,nios

  不得不说这个板子设计的还是比较到位的,一共8层,应该用的是S-G-S-V-G-V-S-G-S层叠,没用用特殊工艺(盲孔,盘中孔之类的)。FPGA的去耦相当到位用的0402,小体积的电容有更小的ESL,谐振点更高,能提供更好的去耦效果。这里去耦电容的大小一般设置有2种方法,第一种是经验法,为20~50倍的Cpd,这Cpd是器件的等效电容(含负载),第二种是PDN目标阻抗匹配法,需要使用电源完整性仿真工具做优化。bulk电容考虑到几乎要将全部管脚都扇出,所以放置距离较远。右侧是DDR,VTT的bulk太豪华了,有点过度设计,去耦同样也比较到位,

  这里有一个问题是如何确定时钟脚,观察晶振的位置在芯片上侧,凑巧的是在TOP SIDE只有唯一的两个时钟脚,于是成功迈出第一步。这里GXB_RX是瞎猜的,因为没用手段去测试它,只能大致确定差分对的位置,不过我应该用不到。经过3H的奋战,到凌晨基本已经走完了大半。

杂记:逆向一块FPGA核心板,杂记,fpga开发,逆向,nios


测试

  为了验证DDR的正确性,这里跑一个喜闻乐见的NIOS。

杂记:逆向一块FPGA核心板,杂记,fpga开发,逆向,nios

  这里最关键的是DDR Controller的配置。

杂记:逆向一块FPGA核心板,杂记,fpga开发,逆向,nios

  时钟给了150兆。

杂记:逆向一块FPGA核心板,杂记,fpga开发,逆向,nios

  这里没有46V32M16的模板,倒是有个16M16的,依葫芦画瓢改改列地址。

module NIOS_DDR1(
	input 				clk					,
	output		[1:0]	pio					,
	inout sdram_ck, sdram_ck_n, 
	output sdram_cs, sdram_cke, sdram_ras, sdram_cas, sdram_we,
	output [12:0] sdram_addr,
	inout [15:0] sdram_dq,
	inout [1:0] sdram_dqs,
	output [1:0] sdram_dm,
	output [1:0] sdram_ba
);
	
	
	wire nrst;
	nios u0 (
	.reset_reset_n              (		nrst					),
	.clk_clk                    (		clk						),
	.pio_export                 (		pio						),
	.sdram_sysclk_clk           (								),
	.sdram_ex_local_refresh_ack (								),
	.sdram_ex_local_init_done   (								),
	.sdram_ex_reset_phy_clk_n   (								),
	.adram_mem_mem_clk          (		sdram_ck				),   
	.adram_mem_mem_clk_n        (		sdram_ck_n				), 
	.adram_mem_mem_cs_n         (		sdram_cs				),  
	.adram_mem_mem_cke          (		sdram_cke				),   
	.adram_mem_mem_addr         (		sdram_addr				),  
	.adram_mem_mem_ba           (		sdram_ba				),    
	.adram_mem_mem_ras_n        (		sdram_ras				), 
	.adram_mem_mem_cas_n        (		sdram_cas				), 
	.adram_mem_mem_we_n         (		sdram_we				),  
	.adram_mem_mem_dq           (		sdram_dq				),    
	.adram_mem_mem_dqs          (		sdram_dqs				),   
	.adram_mem_mem_dm           (		sdram_dm				)     
	);
	
	
	assign nrst = (cnt == 4'b1110) ? 1'b0 : 1'b1;
	reg [3:0] cnt = 4'd0;
	always @(posedge clk) begin
		if(cnt != 4'b1111)
			cnt <= cnt + 1'b1;
		else
			cnt <= cnt + 1'b0;
	end
	
endmodule

  简单例化一下,然后写了一个小灯程序。

#include <io.h>
#include <unistd.h>
#include <system.h>
int main()
{
	IOWR(PIO_0_BASE,1,0x0003);
	while(1)
	{
		IOWR(PIO_0_BASE,0, 0x0003);
		usleep(500000);  
		IOWR(PIO_0_BASE,0,0x0000);
		usleep(500000);
	}
	return 0;
}

  行云流水,一把跑通,香槟庆祝。目前没用想到特别有价值的应用,可能以后会画一个底板,或者给有缘人吧。

  板子后面有个彩蛋,一看英语课就在睡觉!Supply?Suplly!

杂记:逆向一块FPGA核心板,杂记,fpga开发,逆向,nios文章来源地址https://www.toymoban.com/news/detail-517933.html

到了这里,关于杂记:逆向一块FPGA核心板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Fpga开发笔记(二):高云FPGA发开发软件Gowin和高云fpga基本开发过程

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/135620590 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《Fpga开发笔记(一):

    2024年01月16日
    浏览(70)
  • 【FPGA】高云FPGA之科学的FPGA开发流程

    项目需要做什么,了解系统的功能,如果是大型的项目还会划分模块 通过使用verilog、VHDL、成熟的IP核或者通过画原理图的方式进行逻辑输入设计 当逻辑输入设计完成后需要对其进行验证,该部分由软件部分进行验证,如果逻辑输入有问题需要检查语法错误或则重新设计设计

    2024年02月04日
    浏览(48)
  • 【安路FPGA】FPGA开发日记(一)

    一、开发环境的安装 首先去安路官网下载安装包工具与资料下载-国产FPGA创新者 - 安路科技 下载后解压 点击安装包直接傻瓜式安装即可 备注:安装后无法打开或者缺文件等情况是安路安装包不包含一些C++库,需要我们自己下载一个  二、一切准备工作做完开始建立第一个属

    2024年02月07日
    浏览(65)
  • 【FPGA】FPGA入门 —— 基本开发流程

    快速上手verilog语法 状态机,线性序列机 FPGA常见的设计方法 自己写代码,下载代码进行使用,使用厂家/第三方提供的IP核 常见接口设计 等等。。 学习时间:基础内容的学习 - 20*8h,啊啊啊我可以我能行,看来这个月我给把时间砸这上面了~~ 仿真两大作用:检查验证设计功能

    2024年02月11日
    浏览(51)
  • 学习FPGA之四:FPGA开发方法

            FPGA是一个很特殊的芯片,可能在2个月前,我还对它一无所知。我们熟知的芯片都是CPU,GPU,或者知道ASIC的概念。但实际上,FPGA已经走过了30个年头,它目前已经成为一个包含各种先进电路,逻辑单元,接口,芯片封装,制造等技术的“集大成者”。在硬件不断发

    2024年02月06日
    浏览(54)
  • Xilinx FPGA 开发软件:让 FPGA 开发更加高效

    Xilinx FPGA 开发软件:让 FPGA 开发更加高效 FPGA(Field Programmable Gate Array)是一种硬件设计语言,可以用来构建可重构的数字电路。在 FPGA 的开发过程中,Xilinx FPGA 开发软件是必不可少的工具之一。它不仅可以简化 FPGA 的设计流程,而且还可以提高设计的效率。 Xilinx FPGA 开发软

    2024年02月04日
    浏览(53)
  • FPGA经验谈系列文章——FPGA开发方向以及算法开发模型

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FPGA开发笼统的说可以分为两个方向,一个是接口方向、一个是算法方向。 接口方向可不是简单的uart、IIC、SPI等这些简单接口,这些东西不足以支撑一个方向,大部分都是基于serdes的高速复杂接口,例如

    2023年04月10日
    浏览(63)
  • FPGA 开发必备:从零开始学习 FPGA 设计

    FPGA 开发必备:从零开始学习 FPGA 设计 FPGA 是一种可编程逻辑器件,可以在不用重新设计硬件电路的情况下修改其功能。它是数字电路设计中最重要的组成部分之一。FPGA 的广泛应用领域包括通信、计算机、图像处理、音频处理等。 要想成为一名合格的 FPGA 工程师,你需要了

    2024年02月07日
    浏览(59)
  • FPGA学习笔记-1 FPGA原理与开发流程

    注:笔记主要参考: B站 正点原子 教学视频“正点原子手把手教你学FPGA-基于达芬奇Pro开发板 Artix-7 XC7A35T/XC7A100T”。 小梅哥爱漂流 教学视频“【零基础轻松学习FPGA】小梅哥Xilinx FPGA基础入门到项目应用培训教程”。 B站搬运 “特权同学2020版《深入浅出玩转FPGA视频教程》

    2024年02月05日
    浏览(50)
  • 【FPGA开发】HDMI通信协议解析及FPGA实现

      笔者在这里使用的开发板是正点原子的达芬奇开发板,FPGA型号为XC7A35TFGG484-2。参考的课程是正点原子的课程手把手教你学达芬奇达芬奇Pro之FPGA开发篇。   HDMI,全称为High Definition Multimedia Interface,即高清多媒体接口。它不仅可以传输视频信号,还可以传输音频信号。上

    2024年02月21日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包