FPGA
文章平均质量分 68
IC学习者
没毕业,没有工作经验。对知识有好奇心,希望能涉猎多一些技术,记录自己的学习过程。
展开
-
Vivado工程清除中间文件
为了git工程,想把工程的中间文件删除一下reset_project -helpreset_projectDescription:Reset current projectSyntax:reset_project [-exclude_runs] [-exclude_ips] [-exclude_sim_runs] [-quiet][-verbose]Usage:Name Description[-exclude_runs] Do not re原创 2022-03-03 10:51:13 · 2538 阅读 · 0 评论 -
vivado里那些看不懂的原语
遇到一段代码是Intel风格的,可以用xilinx的BUFG进行替代//BUFG分配时钟专用资源,指定信号走专门的时钟布线修改为布线时候报错具体原因未知,只能先把功能打通,所以把相关的部分注释掉。下面是收集的一些资料,来源都做了标注。...原创 2022-07-28 14:35:21 · 3801 阅读 · 0 评论 -
vivado里那些看不懂的约束语句
设置从flash将程序加载到FPGA的位宽参考https。原创 2022-07-15 15:52:20 · 916 阅读 · 0 评论 -
手撕RAM(单端口,简单双端口,真双端口)
这里写自定义目录标题单端口rtlsim简单双端口rtlsim真双端口rtlsim单端口rtlmodule hand_ram_sp #( parameter DATAWIDTH =8 , parameter ADDRSIZE =8)( input clka , input ena , input wea , input [ADDRSIZE-1:0] addra , input [DATAWIDTH-1:0] dina , ou原创 2022-05-18 20:31:58 · 605 阅读 · 0 评论 -
一段式、两段式和三段式状态机
这里写自定义目录标题一段式两段式三段式这张图片是mealy型状态机的结构,Moore型类似,输出与输入无关。一段式module moduleName ( input clk, input rst_n, input in, output reg [3:0] out);localparam s1=4'd0, s2=4'd1, s3=4'd2, s4=4'd3, s5=4'd4;reg [3:0] cur_state;reg [3:0] next_state;always @(po原创 2022-05-13 21:44:41 · 860 阅读 · 0 评论 -
一个实例带你理解阻塞赋值与非阻塞赋值(转载)
一个实例带你理解阻塞赋值与非阻塞赋值 always @(*) #3 out1=in; always @(*) #3 out2<=in; always @(*) out3=#3 in; always @(*) out4<=#3 in; assign #3 out5=in;我们首先看第一个always块,当我们检测到in发生变化的时候,我们就会进入always块,进来之后第一件事就是延迟3个单位,然后再进行阻塞赋值。延时3个单位以后,in的值为1,此时ou转载 2022-05-13 20:18:52 · 467 阅读 · 0 评论 -
Verilog语法之六:阻塞赋值与非阻塞赋值(转载)
Verilog语法之六:阻塞赋值与非阻塞赋值在描述组合逻辑的always 块中用阻塞赋值,则综合成组合逻辑的电路结构。在描述时序逻辑的always 块中用非阻塞赋值,则综合成时序逻辑的电路结构。为什么一定要这样做呢?这是因为要使综合前仿真和综合后仿真一致的缘故。[例1]用阻塞赋值的反馈振荡器(不好的例子)module fbosc1 (y1, y2, clk, rst); output y1, y2; input clk, rst; reg y1, y2; always @(posedg转载 2022-05-13 20:11:38 · 502 阅读 · 0 评论 -
阻塞赋值与非阻塞赋值的思考与实践
这里写自定义目录标题示例阻塞赋值+阻塞赋值非阻塞赋值+阻塞赋值非阻塞赋值+非阻塞赋值阻塞赋值+非阻塞赋值示例阻塞赋值+阻塞赋值initialbegin forever #(PERIOD/2) clk=~clk;endinitialbegin #(PERIOD*8) in = 1; #(PERIOD/2) in = 0; #(PERIOD*4) in = 1; #(PERIOD/2) in = 0;end在85时刻,in由阻塞赋值给到了0,所以上升沿采集到的为0在原创 2022-05-13 17:21:27 · 286 阅读 · 0 评论 -
Vivado综合的教训
这里写自定义目录标题前记综合后的资源利用率synth_1_synth_report_utilization_0[Common 17-1649][Place 30-494] The design is empty前记很长时间以来,我写的工程都是小规模的,综合时间大约5min以内(r7000p 2021),这次综合的时间是20min中,这是史无前例的,虽然我知道,综合时间这么长是因为我的HDL有问题。但是, 这个过程值得记录,用来后续的查阅。综合后的资源利用率synth_1_synth_report_原创 2022-04-30 21:34:28 · 6130 阅读 · 2 评论 -
Vivado远程编辑与下载
文章目录FPGA主机端比特流主机端FPGA主机端打开端口\Xilinx\Vivado\2018.3\bin\hw_server.bat主机端打开完成比特流主机端原创 2022-04-30 20:11:27 · 1603 阅读 · 0 评论 -
Vivado使用Cordic IP计算e^ix(复e指数函数)
这里写自定义目录标题原理IP解析设置IPHDL CodeSimulationCode仿真reference原理根据欧拉公式e^(ix)=(cos x+isin x)IP解析1 选择功能为计算正余弦2 并行(面积和速度的平衡)3 流水线模式开到最大(不知道有啥用)4 有符号小数(整数宽度为2(里面应该包含了一位符号位))这个选项是默认的,而且我们用的是相位而不是坐标对,可以忽略这个选项5 相位格式(以弧度为单位还是以pi为单位,1位符号位,2位整数位和N-3位小数位的补码)不同的格原创 2022-04-25 19:03:39 · 2600 阅读 · 3 评论 -
Modelsim仿真VIvado遇到的问题
这里写自定义目录标题编译Vivado仿真库报错Warning: (vlog-159) Mode option -64 is not supported in this context and will be ignored.# ** Warning: (vsim-8683) Uninitialized out port /tb_ip_fft2/u_top/u_ip_fft/u_xfft_0/U0///(0) has no driver.# Block Memory Generator module tb_i原创 2022-04-08 18:59:38 · 5570 阅读 · 0 评论 -
Modelsim tcl 导出波形数据到MATLAB
这里写目录标题过程定义调用示例结果MATLAB观察本文内容来源于一篇博客 Modelsim导出数据的两种方法过程定义proc write_sim_data {env name radix cycle file} { set fid [open $file w] for {set i 0} {$i <= $::now} {incr i [expr $cycle * 1000]} { set str [exa -env $env -radix $radix -time原创 2022-04-05 20:04:51 · 1748 阅读 · 0 评论 -
Vivado环境下基于FPGA的IP实现FFT变换
这里写自定义目录标题环境层次结构仿真实现HDL顶层文件仿真文件dds文件IP配置FFTROMCOE文件生成reference环境VivadoModelsim 仿真层次结构ROM matlab产生波形,保存到coe文件中,加载到rom中dds 控制输入信号的频率dds的输出信号给到fft IP核仿真左边为input,右边为output输入信号的范围为0-255,包含直流分量,频率为单频实现HDL顶层文件module ip_fft( input clk, inpu原创 2022-04-02 20:38:07 · 2326 阅读 · 1 评论 -
vivado 基于FPGA的dds学习记录
DDS(Direct Digital Synthesizer)即直接数字式频率合成器,是一种新型的频率合成技术。 与传统的频率合成器相比, DDS 具有相对带宽大,频率转换时间短,稳定性好,分辨率高,可灵活产生多种信号等优点。较容易实现频率、相位及幅度的数控调制,因此,在现代电子系统及设备的频率源设计中,尤其在通信领域,直接数字频率合成器的应用越来越广泛。作为设计人员,我们习惯称它为信号发生器,一般用它产生正弦、锯齿、方波等不同波形或不同频率的信号波形。原创 2022-03-28 21:10:40 · 2494 阅读 · 0 评论 -
FPGA 矩阵转置
这里写目录标题功能开发环境框架转置公式Simulation第一部分第二部分第三部分Matlab代码产生FIFO数据产生转置矩阵HDL顶层文件FIFO顶层文件FIFO读FIFO写RAM顶层文件IP配置FIFORAMROMReference功能通过tb读取本地数据保存到FIFO,通过coe文件将转置后的地址数据保存在ROM中,读取FIFO的文件作为输入,读取ROM作为地址。通过地址变换,对矩阵进行转置,最终将转置后的矩阵保存在RAM中。开发环境Vivado框架包含IP:FIFO、RAM和ROM转原创 2022-03-23 13:19:14 · 5933 阅读 · 8 评论 -
Vivado多线程加速
参考Vivado中jobs和threads的区别?选择多个jobs能加快实现速度么?可以得知在综合,实现和生成bit文件中,Number of jobs并不能加快速度,只是设置同时运行的最大runs。对于多线程而言,应该通过tcl进行设置。通过report_param general.maxThreadsreport_param synth.maxThreads可以看到report_param synth.maxThreadsName Value Type原创 2022-02-28 18:45:16 · 3138 阅读 · 0 评论 -
FPGA FIR数字滤波器 低通、不用IP
FPGA FIR数字滤波器 低通、不用IP原创 2021-05-23 10:44:02 · 2957 阅读 · 12 评论 -
FPGA 数字时钟,支持暂停计时、清零、置数
这里写目录标题学习记录功能框图仿真结果源码学习记录功能设计一个可以计时的数字时钟,其显示时间范围是 00:00:00~23:59:59,且该时钟具有暂停计时、清零、置数等功能。(没有数码管)框图仿真结果set置数从23.59.59-0.0.0ENA为低电平时暂停计数计数清零仿真文件可以在github上看到源码module Digital_clock ( input clk, input rst_n, input ena, input set, input [7:原创 2021-05-23 10:16:20 · 4197 阅读 · 6 评论 -
verilog基础语法
这里写目录标题学习记录模块例化HDL信号类型逻辑功能注释数据类型学习记录模块例化模块实例化(也称模块调用)基本格式为:<模块名> <例化名>(<端口列表 >);根据被调用的低层模块与上层模块的连接端口的描述方式不同,有两种实例化方法 :按端口顺序连接: 低层模块定义时声明的端口顺序与上层模块相应的连接端口顺序保持一致。格式:模块名 例化名 (PORT_1,…,PORT_N);按端口名称连接,被调用的低层模块和上层模块是通过端口名称进行连接的。格式:模块原创 2021-03-09 09:33:16 · 2161 阅读 · 0 评论 -
verilog语法进阶
这里写目录标题学习记录组合数组数组逻辑或与按位或注意向量隐式赋值 ,使用 `default_nettype none 避免bug创建内存数组的使用数字组合问题注意区分高位有没有被赋值向量逆向,注释没看懂重复组合向量全加器移位寄存器不完整分支和不完整输出逻辑X、Z{32{sub}}将sub补成32位,如果不补可能只运算1位同或的两种表达方式异或???所有位全部赋值为1,省事一种写法当两个正数相加产生一个负数,或两个负数相加产生一个正数时,就会发生有符号溢出。有几种方法可以检测溢出:可以通过比较输入和输出数字的原创 2021-03-07 20:06:47 · 4188 阅读 · 0 评论 -
PYNQ-Z1 资源分析
这里写目录标题概述架构PS部分PL部分编程模式Basic I/OPMOD概述核心:XC7Z020-1CLG400C存储器:512MB DDR3,16MB Quad-SPI Flash架构ARM Cortex-A9处理系统和集成的现场可编程门阵列FPGA架构PS部分PL部分编程模式Basic I/OTwo tri-color LEDs, 2 switches, 4 push buttons, and 4 individual LEDs are connected to the Zy原创 2021-03-07 12:28:52 · 2059 阅读 · 2 评论 -
ZYNQ 嵌入式按键控制LED整理
学习记录文章目录学习记录主函数读取按键状态源码分析按键中断代码分析参考文献PL部分省略不表主函数读取按键状态源码#include "stdio.h"#include "xparameters.h"#include "xgpiops.h"#define GPIOPS_ID XPAR_XGPIOPS_0_DEVICE_ID //PS端 GPIO器件 ID#define MIO_LED2 0 //PS_LED2 连接到 MIO0#define EMIO_KEY 54 //PL_原创 2020-11-05 11:09:28 · 1137 阅读 · 0 评论 -
ZYNQ嵌入式设点亮LED整理
学习记录文章目录学习记录代码设计代码分析参考文献PL部分设计较为简单,省略不表。代码设计#include "xparameters.h" //器件参数信息#include "xstatus.h" //包含XST_FAILURE和XST_SUCCESS的宏定义#include "xil_printf.h" //包含print()函数#include "xgpiops.h" //包含PS GPIO的函数#include "sleep.h" //包含sleep()函数原创 2020-11-05 10:28:56 · 577 阅读 · 0 评论 -
vitis使用教程
学习记录在学习ZYNQ嵌入式开发的过程中,正点原子的教程是采用SDK,而我下载的vivado2020.1已经变成了vitis,所以写一这篇博客,方便后续查阅。文章目录学习记录找到vitis安装vitis创建platform工程创建application工程找例程编写源码找到vitisvivado->tools->launch vitis ide如果打开失败,说明没有安装vitis,先进行安装安装vitisvivado->help->Add Design Tools o原创 2020-11-03 12:41:46 · 48614 阅读 · 9 评论 -
PYNQ配置DDR Configuration
学习记录文章目录学习记录方法一方法二方法三方法一自己照着PYNQ-Z1 Board Reference Manual里面的Memory o 512MB DDR3 with 16-bit bus @ 1050Mbps5 DDR MemoryThe PYNQ-Z1 includes an IS43TR16256A-125KBL DDR3 memory components creating a single rank, 16-bit wide interface and a total o原创 2020-11-01 16:30:42 · 2351 阅读 · 2 评论 -
为pynq添加board files
学习记录文章目录学习记录下载链接放置文件作用下载链接PYNQ-Z1 Board Files的下载链接可以到digilent的官方论坛里找,链接是http://www.digilent.com.cn/community/411.html。下载链接在页面的最下方。放置文件将pynq-z1文件夹移动到...\Xilinx\Vivado\2020.1\data\boards\board_parts\zynq路径下。作用实际有啥用我也不知道,只是在选器件的时候,可以直接选板子,不用选芯片。困惑我很久原创 2020-11-01 16:00:41 · 1604 阅读 · 0 评论 -
plt.imshow()显示图片有色差
学习记录文章目录学习记录解决方案参考文献在用pynq的时候,使用plt.imshow()显示opencv的图片中发现,显示的图片颜色不正常,明明是红色的,显示的颜色确实蓝色,测试硬件也没有发现异常。经过百度发现,plt和opencv显示图片的格式不一样,opencv的图片显示是bgr格式的,而plt显示图片是rgb格式的。解决方案显示彩色图片import numpy as npimport cv2videoIn = cv2.VideoCapture(0)# frame_in_w =原创 2020-10-31 18:43:27 · 1925 阅读 · 0 评论 -
vivado2020.1与notepad++的关联
学习记录文章目录学习记录打开vivado软件tools->settings点击左侧tools setting->text editor在current editor中选择custom editor填写Custom Editor Definition具体格式为“notepad++安装目录\notepad++.exe [file name] -n[line number]”点击确定,关联成功经过测试,使用正常...转载 2020-10-29 09:26:49 · 1871 阅读 · 1 评论