FPGA
malcolm_110
这个作者很懒,什么都没留下…
展开
-
带参数传递的Verilog模块设计
在Verilog设计中,模块化有利于提升代码的可重用性,从而提升设计的效率以及可阅读性。有时候同一个模块在不同的地方被引用时,可能需要配置不同的参数值。为了实现这一目的,我们可以在子模块中采用“parameter” 来定义。下面举个例子:计数器做为子模块,负责计时。LED模块来调用计数器模块。首先我们创建一个counter.v,带参数的变量 parameter CNT_MAX = 25’d24_999_999; module counter(Clk,Rst_n,led); inp原创 2021-11-30 10:14:28 · 2559 阅读 · 0 评论 -
Altera MAX II 工程移植到 MAX V上编译出错
现在MAX II 系列的CPLD逐步停产,很多工程需要移植到MAX V系列上,最关键,MAX V系列的价格还很美丽。MAX V系列器件相比于MAX II最大的特点是核心电压降低到1.8V,电压低有利于降低功耗,提升时钟频率。在工程迁移的过程中,器件重新选择、引脚重新分配后,会报如下编译错误:Error (21191): Supply voltage value 2.5V set to the 'VCCINT' power rail is illegal for the selected device.原创 2020-10-27 15:11:05 · 5668 阅读 · 2 评论 -
VIVADO+ZYNQ7000入门四,PS与PL的AXI总线通信
快速索引目标预备知识工程实例目标你好!预备知识我们工程实例创建一个空白工程,创建过程可以参考这里https://blog.csdn.net/malcolm_110/article/details/107222944Creak block design添加zynq block添加一个AXI_GPIO模块添加点击自动布线在弹出窗口中打勾效果如下,我们可以看到系统会自动添加了一个AXI转换器,一端连接到了ARM核,一端连到了AXI的设备上,我们这里用的是原创 2020-09-11 18:18:02 · 7387 阅读 · 1 评论 -
VIVADO+ZYNQ7000入门三,PS与PL的联合开发
索引一、目标二、预备知识二、工程实例三、SDK开发四、下载运行一、目标熟悉PS的底层硬件控制、熟悉PS与PL联合开发。二、预备知识我们从Xilinx的官方文档UG585的第二章可以了解到,PS与PL数据交换主要就是通过AXI总线,此外还有时钟/中断、DMA等控制信号接口。详细的各部分功能框图如下。UG585的第四章可以看到ZYNQ上ARM核的地址空间分配情况。第14章可以了解到如何配置、读写EMIO。二、工程实例空白工程的创建请参照VIVADO+ZYNQ7000入门一博文。工程建立好原创 2020-09-02 09:50:53 · 6322 阅读 · 0 评论 -
VIVADO+ZYNQ7000入门二, 第一个PS程序,从创建到运行
空白工程的创建请参照上一篇博文VIVADO+ZYNQ7000入门一, 第一个PL程序,从创建到运行PS系统在Vivado的架构下被当作一个IP core来调用,接下来我们先准备一个具备简单功能的PS系统,在新建工程窗口的最左侧,如下图所示,点击1,弹出窗口中,在2的位置输入IP的名称,然后点击OK在弹出的新窗口中点击1处的图标,在2的位置输入zy搜索,可以看到ZYNQ的处理器系统block,双击。稍等片刻,zynq的模块图标展现在我们面前!双击它,目的是订制一些接口功能以及参数。接下来的工作原创 2020-09-01 10:24:50 · 3330 阅读 · 0 评论 -
Verilog 常用操作符,以及$display系统函数 ModelSim 仿真
一、算术操作符 Arithmetic OperatorsOperatorDescription+Add-Minus*Multiply/Divider原创 2020-08-04 15:14:10 · 2858 阅读 · 1 评论 -
从原理的视角,一文彻底弄懂FPGA的查找表(LUT)、CLB
我学东西有个特点,喜欢从原理的层面彻底弄懂一个知识点,这几天想弄明白FPGA的查找表,但发现很多博文写的很模糊,看了以后仍然不是很明白。当然,可能是作者自己弄懂了,但没有站在新人的角度来详细的解释。通过多方资料查找,终于把原理彻底搞懂,在此记录一下吧。如果朋友看了我的文章后,仍然不明白的,欢迎随时交流。背景知识我最早接触逻辑门是在初中物理的一堂课上,当时课本的小知识栏讲了一个家用自动晾衣架,原理挺简单,就是晚上或者下雨天晾衣架可以自动收回。当时觉得这种与非门电路太奇妙了!假如我们用A表示白天,用A‾\原创 2020-07-10 17:14:17 · 32136 阅读 · 29 评论 -
VIVADO+ZYNQ7000入门一, 第一个PL程序,从创建到运行
学习FPGA开发是普通硬件工程师往资深硬件工程师发展的必经之路,随着芯片的集成化越来越高,传统硬件工程师可以做的工作越来越少,是不是硬件工程师就没有前途了?随着FPGA的集成度越来越高,以及应用市场对于大数据量/大运算量的需求与日俱增,ARM+FPGA的集成路线会成为未来的芯片发展的主流趋势。掌握这种异构平台的开发技能也是硬件工程师提升自身能力的途径之一。先从一个简单的Verilog程序入手吧,今天的主要任务是熟悉vivado的操作流程。工程创建vivado软件的安装本文就不介绍了,下面假定你已经在原创 2020-07-09 11:40:19 · 3631 阅读 · 3 评论 -
verilog之定时计数--任意分频、任意宽度脉冲、复位信号产生、置位/清零、PWM波形
verilog之定时计数器用法--分频、复位延时、脉冲展宽、置位/清零Timer的重要性分频器复位延时脉冲展宽置位/清零 SET/RESETTimer的重要性Timer是数字电路的基础,所有器件都是在时钟节拍下工作,由于时钟节拍速率高,FPGA内部可以达到100M,有些低速的设备就需要进行分频处理,这就产生了计数的需求。不同的功能模块速率不同,自然也就需要不同的计数器。分频器分频器的关键是...原创 2020-01-15 11:43:49 · 8146 阅读 · 1 评论 -
Quartus II assignment 引脚分配窗口关闭后如何打开
Quartus II assignment 引脚分配窗口关闭后如何打开意外关闭如何打开意外关闭如何打开今天用Qartus II 的时候遇到一个棘手的事,网上、群里都找不到答案。我的版本是13.0,遇到的现象是不小心把引脚分配窗口关闭了,找了很久不知道如何打开。正常情况打开Assignment – Pin Planner 弹出如下窗口:不小心把下面分配引脚的窗口关闭后,如下图所示:找了...原创 2020-01-13 16:49:58 · 6417 阅读 · 3 评论 -
LocalBUS总线读写寄存器的Verilog代码实现(二)-inout型双向总线Testbench的编写
LocalBUS总线读写寄存器的Verilog代码实现(二)-inout型双向总线Testbench的编写Testbench 注意事项Teshbench 源码仿真波形Testbench 注意事项在本例中,testbench 的难点在于如何对双向信号进行仿真,通过查找资料,我找到用下方法来实现inout型信号的仿真。reg [7:0]BMD$inout$reg;wire [7:0]BMD =...原创 2020-01-13 15:59:25 · 3077 阅读 · 3 评论 -
LocalBUS总线读写寄存器的Verilog代码实现(一)
LocalBUS总线读写寄存器的Verilog代码实现(一)应用背景注意事项应用背景在FPGA内部,经常需要实现一些寄存器功能,这些寄存器可以通过外部的localbus并行总线或其它串行总线来访问。本文所设计的模块先考虑并行情况,针对串行总线的情况,需要增加另外的串转并模块,请参阅其它博文。模块所涉及的信号主要是地址、双向数据、片选、读、写,用到的知识就是数字电路里的译码器,地址总线上送来的...原创 2020-01-11 11:41:14 · 7949 阅读 · 1 评论 -
Verilog 递减运算符(缩减运算符)(Reduction operators),以及$display系统函数 ModelSim 仿真
Verilog 递减操作符(缩位操作符)(Reduction operators)以及仿真递减操作符(Reduction Operators)为单目运算符,运算符紧跟变量,结果为1bit值。如“&C”表示将C的第一位与第二位相与,再将结果与第三位相与,再与第四位…一直到最后一位。Operator Description& ...原创 2019-05-23 21:00:50 · 11150 阅读 · 1 评论