摘要:很久很久没有更新过博客了,今天来扒一扒FPGA上CPU软核的使用。 主要完成的功能:使用的开发板是nexys 4 DDR,板上有16个switch以及16个LED,需要完成microblaze对led的控制以及将switch作为外部中断源。 一、自定义GPIO IP核 还是在Tools里面选择Cre
阅读全文
随笔分类 - verilog
摘要:很久很久没有更新过博客了,今天来扒一扒FPGA上CPU软核的使用。 主要完成的功能:使用的开发板是nexys 4 DDR,板上有16个switch以及16个LED,需要完成microblaze对led的控制以及将switch作为外部中断源。 一、自定义GPIO IP核 还是在Tools里面选择Cre
阅读全文
摘要:之前最常用的一个attribute就是mark_debug了,语法如下:(*mark_debug="ture"*)。 今天又学到几个新的,原文在这里:http://china.xilinx.com/support/answers/54357.html 一、PARALLEL_CASE (Verilog
阅读全文
摘要:原文地址:http://www.fpga4fun.com/PCI-Express6.html Let's try to control LEDs from the PCI Express bus. Xilinx's "Endpoint Block Plus" core allows us to wo
阅读全文
摘要:在FPGA4FUN上看到一篇介绍PCI-E的帖子,简单易懂,适合入门,特地搬过来 原文地址:http://www.fpga4fun.com/PCI-Express.html 前言: As PCI Express becomes common place in high-end FPGAs, let'
阅读全文
摘要:前面已经详细介绍了从PL端如何用AXI总线去控制DDR的读写,并且从AXI_BRESP的返回值来看,我们也是成功写入了的。但是没有通过别的方式来验证写入的数据的话,总是感觉差了点什么。 今天试了一把从PS端直接读取DDR里面的数据,刚好跟PL端写入的一样,这下可以放心的认为我们写入成功了。 还是跟前
阅读全文
摘要:上一节说到了DDR寻址的问题,如下图: 从官方文档上我们看到了DDR的地址是从0008_0000开始的,那么我们开始修改Xilinx给我们提供的IP核代码。其实很简单,上一节已经分析了地址停留在0000_1000的原因,现在我们只需要把write_burst_counter的位宽变大就可以了。 从上
阅读全文
摘要:有了前面的一堆铺垫。现在终于开始正式准备读写DDR了,开发环境:VIVADO2014.2 + SDK。 一、首先要想在PL端通过AXI去控制DDR,我们必须要有一个AXI master,由于是测试,就不自己写了,直接用package IP生成,方法如下: 1.选择package IP工具 2.创建新
阅读全文
摘要:之前的项目和培训中,都只用到了AXI-Lite或者AXI-Stream,对于AXI-FULL知之甚少,主要是每次一看到那么多接口信号就望而却步了。 现在为了调试DDR,痛下决心要把AXI-FULL弄懂。 前面已经介绍了基本的接口信号,本文主要是总结一下使用AXI-FULL调试的过程。 首先想到的是用
阅读全文
摘要:虽然Xilinx已经将和AXI时序有关的细节都封装起来,给出了官方IP和向导生成自定义IP,用户只需要关注自己的逻辑实现,但是还是有必要简单了解一下AXI的时序,毕竟咱是做硬件设计的。 AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMB
阅读全文
摘要:看了一段时间的DDR手册,感觉大体有一点了解了,想要实际上板调试,然而实验室可用的开发板不多,拿了一块zynq板看了看,DDR确实有,但是已经集成了控制器,而且控制器还放到了PS端,PL只能通过AXI接口访问。 无奈另外两块开发板也这样,索性就用AXI去控制吧,正好还能再复习一遍AXI。 先简单介绍
阅读全文
摘要:今天接到一个电话面试,对方问我在一个项目中维护了多少行代码。 我懵逼了,从来没有统计过啊,怎么还会有这种需求? 当时一脸茫然的想了想,回答了一个,呃...差不多两千多行吧...感觉很心虚 挂完电话之后大概看了一下最近的一个项目,光其中某一个顶层文件就一千多行了好吧,感觉自己回答的好low 但是又不能
阅读全文
摘要:这两天正在学习FPGA如何控制DDR3的读写,找到一篇个人感觉比较有意义的文章,可以对DDR的内部结构有一个初步的了解。原文出处:http://blog.chinaunix.net/uid-28458801-id-3459509.html,感谢大神的付出。 首先,我们先了解一下内存的大体结构工作流程
阅读全文
摘要:以下内容转自 艾米电子 - 使用有符号数,Verilog(http://www.cnblogs.com/yuphone/archive/2010/12/12/1903647.html) Verilog-1995中的有符号数 在Verilog-1995中,只有integer数据类型被转移成有符号数,而
阅读全文
摘要:作为一个硬件程序设计民工,最近一直在学习python,写个爬虫,排个序,再画个界面,其实还是挺好玩的。然而这不是我的主业啊!!!-_-||| 下学期开学就要找工作了,明天刚好是新的一个月,还是滚回去调我的FPGA吧。 今天先更新一个很小很小的例子作为开端,这是前几天xxx给我出的一道很随意的题目,主
阅读全文
摘要:在项目设计初期,基于硬件电源模块的设计考虑,对FPGA设计中的功耗估计是必不可少的。 笔者经历过一个项目,整个系统的功耗达到了100w,而单片FPGA的功耗估计得到为20w左右, 有点过高了,功耗过高则会造成发热量增大,温度高最常见的问题就是系统重启,另外对FPGA内部的时序也不利, 导致可靠性下降
阅读全文
摘要:前言: DDS:直接数字频率合成,正弦波0 2pi周期内,相位到幅度是一一对应的(这里我们使用放大后的整数幅度)。 主要思路: 个人理解,FPGA不擅长直接做数字信号计算,那样太占用片上逻辑资源,所以需要事先建立 __正弦波相位 幅度__ 表,然后在时钟下,通过相位累加并用相位作为地址索引来查询正弦
阅读全文
摘要:FPGA通常工作在MHz,而串口波特率远远低于该频率(最高标准速率115200),所以我们需要想办法生成一个滴答时钟来尽可能的接近串口波特率。这里我们用串口链路的最高速度来举例说明: 先来啰嗦一段 在典型的串口设计中,RS 232芯片通常使用1.8432MHz的时钟,因为这样比较容易生成串口的标准波
阅读全文
摘要:相位累加器主要用在直接数字频率合成器(DDS)中,其中的几个主要的参数为输入频率fc,输出频率fo,计数器位宽N,频率控制字K(即计数器递增步长)。它们之间的关系为:fo=(fc K) / 2N,假设输入频率fc为100MHz,计数器位宽N为32,要产生1kHz的信号,则K=(fo 2N) / fc
阅读全文
摘要:在学习FPGA的过程中,最简单最基本的实验应该就是分频器了, 同时分频器也是FPGA设计中使用频率非常高的基本设计之一, 尽管在 芯片厂家提供的IDE中集成了锁相环IP , 如 altera 的PLL , Xilinx ISE的DLL 或者 vivado中的clock 来进行时钟的分频,倍频以及相移
阅读全文
|