自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 开源FPGA开发板icesugar学习(一) -- 环境体验

build这个target会使用yosys工具对verilog文件进行综合,使用nextpnr-ice40工具对设计进行布局布线,最后使用icepack工具生成.bin文件。这里的-json选项,是指定将design的信息写出到对应的文件,如果不指定,则不会将design信息写出到文件中。–pcf是指定constraints文件,这里指定的是common目录下的io.pcf文件,都是引脚绑定信息。(filename).json是综合后生成的文件,应该是包含了netlist信息的文件。

2024-10-24 20:41:51 836

原创 Github_以太网开源项目verilog-ethernet代码阅读与移植(八)——移植工程分享

工程一部分的详细介绍和使用在六篇中有分享,包括笔者使用的板子的硬件情况,后续会更新工程的详细说明。需要注意的是PHY芯片支持的接口。使用时,需要修改引脚绑定以适配自己的板子。第六篇计划是写项目中各个模块的实现和约束文件的编写,有的小伙伴有裁剪工程的需要,就先分享一个半成品以供参考,由于笔者水平有限,错误肯定会有,望批评指正。链接: https://pan.baidu.com/s/1ErtCRM4h1b6iu4sVptSJpA。关注公众号#Joey的自由世界#查看更多内容。

2024-10-24 20:29:54 363

原创 Lattice_FPGA使用Synplify Pro进行综合

单击run,综合开始进行,在如下窗口下可以查看综合过程的进度。单击如下图标打开Synplify Pro工具。当显示Complete时,表示过程执行完成。通过底部标签进行文件,工程,原理图的切换。

2024-10-22 21:08:15 534

原创 Lattice Diamond 3_12 FIFO IP核仿真注意事项

信息显示,PUR_INST和GSR_INST两个模块无法解析。重新编译综合后,再次启动仿真,仿真启动成功。

2024-10-22 21:05:36 223

原创 Lattice FPGA flash写保护解除

可以看到BP4-BP0的值已经被成功设置为5’b00000, 说明所有的flash block的写保护都被解除了。解除写保护的方法就是重写状态寄存器,将BP4-BP0的值写为5’b00000。flash芯片有对应的状态寄存器(status register)来说明当前该芯片的一些设置和状态。本次分享介绍解除flash芯片的写保护。这里需要注意的是,在写状态寄存器指令(WRSR)执行之前,需要执行写使能(WREN)指令。至此,解除板子上flash芯片写保护的内容介绍完毕。解除板子上flash芯片的写保护。

2024-10-22 21:03:29 594

原创 Lattice FPGA开发硬件环境介绍

市面上Xilinx,Intel(Altera)FPGA的开发板是比较常见的,包括国产FPGA(紫光同创,安路科技等)开发板也是可以找到的,但是Lattice FPGA的开发板是比较少见的,官方的开发板价格贵,且比较难买到,对应的教程和资料也比较少,有的开发板只支持USB的方式烧录比特流文件,不能通过JTAG进行在线debug,但是在实际的开发中,在线debug是一个必要的过程。笔者花了一些时间找到了一个带有基本的外设的开发板,经过一些修改,可以通过JTAG进行在线debug,供有需要的人参考。

2024-10-17 19:56:48 511

原创 Lattice FPGA专用SPI端口的使用(二)

SPI_Master模块是SPI驱动模块,USRMCLK为Lattice提供的宏,用于解决SPI专用端口的时钟SCK信号的问题。可以看到,得到的8’hC8, 8’h40,8’h15的值与手册中的给出的Manufacturer ID, Memory Type, Capacity信息一致,说明通过专用SPI接口读取flash芯片内部的信息是成功的。这里的spi_sck为SPI_Master产生的SPI时钟信号,spi_clk_en为使能信号,低有效,且该信号不能设置为定值,需要由时序逻辑驱动。

2024-10-17 19:51:55 478

原创 Lattice FPGA专用SPI端口的使用 (一)

其他模式参考文档即可。

2024-10-17 19:48:53 526

原创 Lattice ECP5-25F系列FPGA dual boot功能实现

新建两个工程,两个工程的功能不同,例如如点亮不同的led灯,或者点亮同一个led灯,但是闪烁频率不同等。通过Deployment Tool生成dual boot的.mcs文件,固化到与FPGA连接的外部flash。dual boot中有两个启动文件,分别为primary boot和golden boot两个文件,在线升级过程中会将最新的升级文件替换primary boot文件,如果因为异常情况导致升级失败,在重新上电或者重新载入配置文件时,会启动golden boot文件,避免了设备无法启动的问题。

2024-10-15 21:21:32 1001

原创 Lattice FPGA High Speed IO 使用(二)

在Lattice FPGA High Speed IO 使用(一)中介绍了该IP核的创建与仿真,现在介绍该IP核在HDMI显示中的应用。由于野火的板子是Intel FPGA, 需要更改的是ddr io的IP核和PLL IP核。介绍Lattice FPGA High Speed IO IP核在HDMI显示中的应用。至此,high speed io IP核在HDMI显示中的应用介绍完毕。使用PCtoLCD2002来创建要显示的内容的字模。该工程的大部分代码来自野火开发板的资料。

2024-10-10 21:05:36 409

原创 Lattice FPGA High Speed IO 使用(一)

至此,high speed io tx的align和center类型的ip的简单创建和仿真介绍完毕,后续会介绍rx类型ip的创建,仿真和使用。可以看到clkout边沿与dout边沿是对齐的,dout先发送的是tx_data的低8位。可以看到,clkout在dout的中间位置,且dout上先发送tx_data的低8位数据。下面给配置好的ip核写一个顶层文件,在顶层文件中例化该ip核。配置ip核时,这里选择Centered,其他的步骤同上。这里需要说明的是,需要加上以下语句,防止仿真时报错。

2024-10-10 21:03:13 554

原创 sdram控制器设计(六)-- 仲裁模块实现

对于仲裁模块,当sdram初始化完成后,进入ST_IDLE状态,当接收到操作请求命令后,则进入对应的操作状态,此时,如果有其他的操作请求命令,则只能等待状态回到ST_IDLE后再去响应。即当需要进行某一操作时,对应模块向仲裁模块发送给请求信号,仲裁模块根据自身所处的状态来响应请求信号,模块收到响应信号后,开始进行操作。输入信号包括自动刷新模块信号,写操作模块信号,读操作模块信号,输出信号包括发送给各模块的响应信号,以及sdram接口信号。下面验证一下仲裁模块功能,当自动刷新使能后,立即开始写数据,

2024-10-10 20:57:48 558

原创 Github_以太网开源项目verilog-ethernet代码阅读与移植(七)——仿真环境使用

开源项目verilog-ethernet中的一些测试文件使用了cocotb平台和myhdl平台,如果需要使用这些仿真测试用例,需要安装这两个平台,现在将搭建好的平台虚拟机进行分享,文末有链接。可以看到tb文件夹下有很多.py文件,其中以test开头的是仿真文件,例如,test_eth_mac_1g.py就是eth_mac_1g.v模块的仿真文件,运行该仿真文件,如下。链接: https://pan.baidu.com/share/init?如果是第一次打开虚拟机,需要在弹窗中选择我已移动该虚拟机。

2024-10-09 21:29:21 418

原创 Github_以太网开源项目verilog-ethernet代码阅读与移植(六)

其中dd表示数据信号在FPGA与下游器件(这里是PHY芯片)之间PCB走线延时,cd_altr表示从Oscillator发出的时钟信号到FPGA之间的PCB走线延时,cd_ext表示从Oscillator发出的时钟信号到下游芯片之间的PCB走线延时,tsu_ext是下游器件接收数据时的建立时间。在(五)中介绍了Github开源项目verilog-ethernet移植过程中的数据跨时钟域传输,以太网数据传输过程和网络层数据传输,现在介绍传输层数据传输,时钟模块,复位模块,时序约束,板级验证等内容。

2024-10-09 21:20:23 1330

原创 Github_以太网开源项目verilog-ethernet代码阅读与移植(五)

对于MII接口,tx_clk和rx_clk均由PHY芯片提供,且为25MHz,上层模块传输数据的时钟可能并不是25MHz,这就有跨时钟域的问题,解决数据跨时钟传输一般的解决方法是使用fifo,verilog-ethernet项目中使用的模块是axis_async_fifo_adapter.v。下面查看mii_tx有关的信号。可以看到,有两个类似的模块,其中axis_async_fifo.v的输入和输出数据是等位宽,而axis_async_fifo_adapter.v模块的输入和输出数据位宽可以不等。

2024-09-29 21:55:43 1451

原创 sdram控制器设计(五)- 读操作问题排查

笔者有以下粗糙的分析,在sdram控制器的设计过程中,通常有一个控制时钟(这里为sys_clk)和提供给sdram器件的工作时钟(这里为sdram_clk),通常情况下指令,地址,写入的数据等信号都在sys_clk的上升沿被发送给sdram器件,sdram器件在sdram_clk上升沿采集发送过来的指令,地址,写入的数据等信号,此外还需要考虑寄存器延时,PCB走线等延时,从镁光的sdram器件手册可以得知指令,地址,写入的数据信号的最小的建立时间为1.5 ns, 最小的保持时间为0.8 ns。

2024-09-29 19:16:28 913

原创 sdram控制器设计(四)读操作

首先给激活命令(ACTIVE)命令,同时需要Address信号和Bank地址信号配合,等待tRCD,在等待tRCD过程中,需要给NOP命令,等待结束后,给读(READ)命令,等待CL个时钟周期(这里CL = 2, 即2个时钟周期)后读出的数据出现在dq上,然后是自动预充电过程,这里配置为自动预充电,所以不需要给PRECHARGE命令,等待tRP时间,等待过程中给NOP命令,等待结束后,读操作结束。可以看到,初始化完成后,进行了两次写操作,每次写操作完成后,write_done拉高一个时钟周期。

2024-09-28 22:57:25 1004

原创 sdram控制器设计(三)-写模块实现

首先给激活命令(ACTIVE)命令,同时需要Address信号和bank地址信号配合,等待tRCD,在等待tRCD过程中,需要给NOP命令,等待结束后,给写(WRITE)命令,同时给待写入数据到Dq信号上,等待tWR,等待过程中给NOP指令,等待结束后,是自动预充电过程,这里配置为自动预充电,所以不需要给PRECHARGE命令,等待tRP时间,等待过程中给NOP命令,等待结束后,写操作结束。在(二)中介绍了sdram自动刷新模块的实现和仿真过程,现在介绍写模块的实现和仿真验证。

2024-09-28 22:48:39 829

原创 sdram控制器设计(二)自动刷新操作

由于自动刷新,写操作,读操作可能会冲突,即需要进行刷新操作时,正在进行读或者写操作,这时就需要进行仲裁,在保证读写数据正确操作的基础上,自动刷新操作优先级最高,所以当自动刷新时间到了,自动刷新模块发出自动刷新请求aref_req给仲裁模块,当仲裁模块同意了,即使能aref_en信号,自动刷新模块开始进行自动刷新操作,同时aref_req信号释放,如果aref_req不使能,则aref_req一直有效。至此,sdram自动刷新模块实现与仿真内容介绍完毕,后面将介绍sdram读写模块实现与仿真。

2024-09-28 16:48:15 753

原创 Github_以太网开源项目verilog-ethernet代码阅读与移植(四)

与以太网相关的模块结构图整理如下,该图以数据流向为画图依据,有的信号和模块没有画出,并不是与实际模块一一对应,这里需要注意。在发送方向,将udp有效数据向下一层一层封装,最后通过PHY发送。在前面的系列分享中介绍了Github开源项目verilog-ethernet的基本信息以及构建工程的方法,现在开始介绍简单的移植过程与关键代码阅读,该过程不会一蹴而就,会分为多篇来介绍,会涉及以太网相关的知识。整个工程,分为pll模块,复位模块,按键消抖模块,以及fpga core模块,进入 fpga core 模块。

2024-09-26 21:15:59 965

原创 sdram控制器设计(一)初始化操作

本系列分享介绍sdram控制器的设计思路与方法,目的是在设计的过程中提高模块划分,状态机编写,仿真测试,时钟模块处理,复位处理,约束文件编写,板级调试等FPGA开发能力,也是对自己设计能力的一个小的测试与总结,同时给大家提供力所能级的参考,在设计的过程中,由于笔者能力有限,肯定会有不合理的地方,望批评指正。该波形图将信号分为三组,输入信号,内部信号以及输出信号,包括状态信号的跳变,输出信号的改变等,波形图在一开始并不一定要特别精确,在开发过程中可能需要进行调整。

2024-09-25 21:02:16 658

原创 Github_以太网开源项目verilog-ethernet代码阅读与移植(三)

由于需要使用make,通过安装Cygwin来解决,Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行UNIX类系统。这里使用vim打开,也可使用文本编辑器打开进行编辑,在文档末尾前添加如下内容,注意这里是笔者的Quartus和Vivado安装路径,需要替换为自己的。如果没有打印任何信息,说明刚才的配置是正确,并且生效的,如果有错误,需要进行重新配置,检查路径配置是否正确。将该文件中所有路径中的/eth/改为如下内容,

2024-09-25 20:51:54 819

原创 Github_以太网开源项目verilog-ethernet代码阅读与移植(二)

FPGA设计,以太网

2024-09-12 21:23:38 690

原创 Github_以太网开源项目verilog-ethernet代码阅读与移植(一)

以上为该以太网项目在各开发板上的具体实现,DE2-115为友晶的开发板,采用Cyclone E FPGA芯片,Arty为Xilinx FPGA开发板,使用A7 FPGA芯片等等。在tb文件夹下有python编写的测试文件和对应模块的顶层文件。先看一下一个基本功能模块的axis_fifo模块的仿真过程,在ubuntu中安装要求的工具,进入lib->axis->tb文件夹。返回主目录,在rtl文件夹有以太网各模块,包括udp层,ip层,mac层,mii接口,gmii接口,rgmii接口等。

2024-09-12 20:59:58 770

原创 Zynq自定义IP

最简单的自定义IP封装1.1实验任务将PL端控制LED灯每隔1s进行闪烁的IP核进行简单的封装,然后与ARM A9处理器连接,A9处理器给该LED IP核提供clk和rst_n信号1.2实验过程首先将Zynq_Uart工程另存为,在此工程上修改,避免重复性工作。首先需要显示FCLK,并将频率设置为100MHz,双击Zynq模块显示clk_rst_n信号显示之后的效果如下下面编写驱动PL端LED灯的代码,如下`timescale1ns/1ps mod...

2020-08-02 14:35:10 1553

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除