
FPGA
mcupro
这个作者很懒,什么都没留下…
展开
-
全兼容增强版zc706单板照片
全兼容增强版zc706单板照片。支持所有zc706功能,直接bin文件兼容。是一个非常经典的zynq平台,以及软件无线电基带板。支持FMCOMMS2,3,5以及adrv9371,adrv9009等射频子板。配合本店射频子板购买将提供完善程。全兼容官方板子基础上提供两路光口,且时钟设置只需拨码即可,优化了电源以及板子布局,缩小了尺寸,简化了冗余的跳线…原创 2022-12-22 19:21:32 · 315 阅读 · 0 评论 -
国产CPLD中AG1280Q48进行开发的实践之一:思路分析
FPGA开发软件大约的工作流程是这样的:步骤1,首先将我们的VERILOG代码进行分析编译成基本的LUT表和寄存器,虽然是相同的LUT表,但是给内部赋予不同初始数值就可以实现不同功能。如果用到了其他内部硬核比如PLL,DSP,RAM需要进行实例化。这一步骤的结果我们成为网表(NETLIST)。步骤2,NETLIST里面就好像一个原理图结合PCB库导入到PCB文件里,接下来要进行布局和布线,将原件放在实际的位置上,生成对每个FPGA/CPLD内部连接的开关以及LUT的初始化文件。这一步可以叫做布局布线.原创 2022-06-09 12:04:25 · 6251 阅读 · 3 评论 -
使用icarous+gtkwave联合quartus进行verilog项目调试
由于现在代码比较多了,我们使用一个集中可视化的开发环境进行管理代码。这里我选择了QUARTUS。我们仿真依然使用icarvas verilog简称iverilog,查看波形依然使用gtkwave。在iverilog编译中发现什么错误会报出具体文件和具体行号,我们直接使用quartus根据视窗的模块(如上图)层次显示直接打开对应的代码。大家可以使用两个屏幕,一个屏幕显示代码,另外一个屏幕显示波形。这样happy地debug。...原创 2021-12-09 06:14:02 · 518 阅读 · 0 评论 -
仿真通过的UDP和IP发送打包
module udp_tx_pack_tb ;reg rst = 0 ,clk = 0 ;always #5 clk = ~clk ;initial begin $dumpfile("test_udp_tx_pack.vd");$dumpvars;rst = 1;@(posedge clk) ;@(posedge clk) ;rst = 0; @(posedge clk) ;end wire [31:0]src_ip ={8'd192,8'd168,8'd2,8'd4...原创 2021-12-04 12:45:38 · 706 阅读 · 0 评论 -
UDP协议实现之:arp_cache实现
实现一个arp_cache实现对IP和MAC的对应存储。多周期实现,有8个条目,没有使用刷新计时器。module arp_cache(input clk , rst ,input [31:0]ip_in,input [47:0]mac_in,input wr_en,output reg wr_busy ,input req_en ,input [31:0] ip_req,output [47:0] mac_out,output reg req_done,req_hit,)原创 2021-12-03 10:38:52 · 376 阅读 · 0 评论 -
RIFFA之LINUX驱动学习之二:riffa.c文件
因为riffa.c包含进来了riffa.h和riffa_driver.h,我们分别贴出来这三个文件:riffa_driver.h// ----------------------------------------------------------------------// Copyright (c) 2016, The Regents of the University of California All// rights reserved.// // Redistribution原创 2021-11-24 22:12:15 · 2001 阅读 · 1 评论 -
做一个FSK的收发试验 之三
之前我们写好了收发模块并进行了仿真,这个BLOG我就尝试在ZEDBOARD+FMCOMMS3试验平台上实现。我们看上篇BLOG实现到的效果,BIT_IN经过了调制,之后经过解调(符号位过0检测)直接反应到BIT_OUT。而我们实际在试验平台上检测要加上射频部分。大体过程这样:发送端:BIT_IN -> FSK_modulator -> 上变频到2.4G(别的频率也可以)...原创 2020-02-25 21:10:47 · 1122 阅读 · 2 评论 -
做一个FSK的收发试验 之一
这里使用我们之前写好的简易的DDS模块。我们先回顾一下用到的这个my_dds模块。/*my_dds my_dds(.clk( ) ,.rst( ) ,.clr ( ) ,.cnt( ) ,.step( ) ,.sin( ) ,.cos( ) ,); */module my_dds(input clk ,rst,clr ,input [15:0] cnt,...原创 2020-02-25 02:29:58 · 776 阅读 · 2 评论 -
使用官方的HDL试验DAC输出 之三
使用自己的my_pack模块,之后加入到系统替换以前的:之后看逻辑分析仪的结果,以下是1R1T模式:看到模块比以前延迟小了几个周期,但是结果一致。再看2R2T模式:结果完全一样。达到了替换的目的。这里再次贴出我写的这部分代码.module my_pack (input rst , clk,input enable0,enable1,enable2,e...原创 2020-02-23 03:13:50 · 440 阅读 · 0 评论 -
使用官方的HDL试验DAC输出 之二
上一个BLOG分析了ADC输出的ENABLE,VALID,DATA信号。补充一张在旁边呜呜响的频谱分析仪的图:我们看到中心频率是2.4G,在2.4G技术上加了大约半个,每格式2M,半格就是1M。这是因为我们使用的是2.4G射频,基带上DDS出了一个1M的正弦波,又因为发射端是上变频,射频加基带的DDS频率。所以就显示成了2.4g+1m的样子。咱们在上一个BLOG里面看的波形频率是...原创 2020-02-23 01:32:32 · 1002 阅读 · 1 评论 -
检查zynq710核心板子的记录-5 (STEP8,9)
STEP8:检查ZYNQ_PS_ETH_PHY.schdoc,这个是PHY芯片的原理图。原版ZC706的这部分有很多跳线,我参照实际板子,一一确定了跳线帽的位置,后作出这个线路。跳线处理部分之前检查过两遍了,这里不再检查了。对照一下千兆以太网RJ45接口的引脚定义。下图是ZEDBOARD的PCB截图PIN脚对应如下:PIN1 -> NCPIN2 0_p...原创 2020-02-21 11:03:18 · 276 阅读 · 0 评论 -
检查zynq710核心板子的记录-4 (STEP7)
STEP7:检测ALL_IIC.SCHDOC这个文件。这里就是一个I2C的集中器芯片,连接多个I2C外设。思路比较简单。检查一下是不是每个线都连接好了。每一个原件检查一下封装。都没有问题就可以PASS。...原创 2020-02-21 01:01:46 · 192 阅读 · 0 评论 -
检查zynq710核心板子的记录-3 (STEP6)
SETP6:检查一下UART_CLOCK.SCHDOC这个文件。内有两路USB转串口芯片,无论原件还是是封装都是现成的,因此这部分比较有把握。PS_UART部分接的PS的MIO必须严格对应,我们用PS2PC来表示从PS为输出,PC也就电脑,是输入,则看到MIO48是PS2PC,同理可以MIO49是PC2PS。经过确认没有问题...原创 2020-02-20 23:59:28 · 377 阅读 · 0 评论 -
检查zynq710核心板子的记录-2 (STEP5)
STEP5:ZYNQ_PS_USB_PHY.SCHDOC 这个文件顾名思义就是USB的PHY芯片。这里要慎重检查,因为这里去掉了很多差价,这些插件是选择模式的。我们这里简单化处理成只支持USB HOST 模式,为了能接USB盘或者其他USB网卡等其他USB外设。对应原来ZC706的几个跳线,确定了工作了工作在USB HOST模式。接着检查各网络是否都有对应的链接。检查了引脚都完全对...原创 2020-02-20 19:17:03 · 178 阅读 · 0 评论 -
检查zynq710核心板子的记录-1 (STEP1-4)
这个ZYNQ710板子是和ZC706部分兼容的板子,原理图库直接用ZC706的文件转换过来的。在ZC706基础上去掉了PCIED光口等高速部分,原来ZC706的两个FMC,完整保留了LPC,其中HPC剔除了高速部分线路,就相当于退化成了一个LPC接口;去掉了原来的DDR内存条;加上了一路LPC的FMC接口(这样就有三路FMC接口了,都是LPC);另外有总共4路3.3V接口的PMOD。大体情况就这样...原创 2020-02-20 18:36:56 · 1014 阅读 · 0 评论 -
一个简单的测量频率的模块
为了方便试验时候测试基带的频率。/*frq_cal #(.REF_FRQ ( 100*1000*1000)) frq_cal(.sig(),.clk(), .res(),.update());*/module frq_cal #(parameter REF_FRQ = 100*1000*1000)(input sig,input clk,output reg...原创 2020-02-10 00:23:54 · 1591 阅读 · 0 评论 -
随便贴一个自己用VERILOG写的状态机
有这样写VERILOG风格吗?类似风格好像我没有见过别人写过。我只是为了简洁,写得快,就有了这种FSM串行序列执行的的写法。感觉难度介于汇编和C之间。运行效果也很好,就暂时没有进行优化和替换。/*module tb_cfg_FSM; reg clk,rst,valid;reg [23:0] ins ;initial begin {clk,rst,valid}=0;...原创 2020-01-12 21:33:33 · 293 阅读 · 0 评论 -
生成SIN波形的一个小工具
#include<stdio.h>#include<math.h>//要用到的sin和cos在这个头文件里 int main(){ int n; int factor = 4096/2 ; float _sin,_cos ; short is,ic; double pi=acos(-1.0); for(n=0;n...原创 2019-12-27 11:58:08 · 2288 阅读 · 0 评论 -
AD9361 随笔记录 AXI_AD9361模块的分析之对外接口篇
之前对官方的AXI_AD9361这个模块内部的输入输出接口进行了详细的分析,分析的详细视频发布在自己所卖板子的配套的教程视频里面。这里我们从AXI_LITE寄存器层面进行分析,看看控制总线接口对外公布了多少寄存器以及各自的功能。下图表示了在系统中的位置:我们先来看接口:分这些部分:1,接AD9361的引脚,如下图:具体输入有rx_clk_n,r...原创 2019-12-16 13:01:31 · 6382 阅读 · 2 评论 -
状态机实现对I2C器件的写操作
1,状态机实现。2,不检测ACK,但满足ACK的时序。3,使用24C02测试通过。4,继续补充。5,怎么能在这里面输入代码格式?module wr_a_byte_to_24c02( input clk,rst, input [6:0] dev_addr, input [7:0] dat, input原创 2014-02-25 12:36:21 · 2827 阅读 · 1 评论 -
经典的单时钟FIFO
经典的,可配置的单时钟FIFO实现 已经经历过流片验证。module sc_fifo#( parameter AW = 5 , parameter DW = 64 )( input clk,rst_n, input [ DW-1:0] din, input wr,rd...原创 2018-12-01 00:39:40 · 662 阅读 · 0 评论 -
一个简单的同步采样的频率计数器
风扇转速线反馈回来的最高频率是180HZ,我随手简单写一个频率计数器。因为采集的频率很低,所以采用简单的同步采样方式,而没有使用跨域时钟域的异步计数器方式。代码如下,每秒产生一个update 信号,这信号更新采集计数器c到result寄存器,之后清0采集计数器c。这里输出是32位是编码习惯,调用时候可以根据实际情况忽略高位。module frq_cal # (parameter frq...原创 2018-12-01 00:41:49 · 648 阅读 · 0 评论 -
简洁的PWM控制器
直接在value里面输入1-98就可以改变占空比,实现PWM调制。改变PRE_DIV参数,可以根据不同clk设置不同的PWM频率。再次分享。 module pwm_ctlr#(parameter pre_div=1000)(input clk,input [6:0] value,output reg pwm);reg [20:0] delay_cntr ;al...原创 2018-12-01 00:43:29 · 2054 阅读 · 0 评论 -
只有一个元素的异步FIFO
module one_entry_fifo #(parameter dw=16 )( input rd_clk, wr_clk, rd_rst_n,wr_rst_n,we,re, input [dw-1:0] d ,reset_value, output reg [dw-1:0] q , output reg empty...原创 2018-12-01 00:44:35 · 199 阅读 · 0 评论 -
一种FSM编码套路和RTL图的分析对话
不跨时钟域一般不用考虑fsm编码格式。FPGA综合器一般会转成热独码。 这都可以哈 不用纠结 能让综合器 编译器做的事情 自己写代码时候就不需要费心 这个状态机 和标志位 是一个意思吗?mcupro 2018-12-24 14:56:11基本一个意思吧 都是个记号记录当...原创 2018-12-24 15:32:31 · 429 阅读 · 0 评论 -
关于Retiming的讨论 2019/4/25 星期四 下午
@@李工请问李工是否用过Vivado的registerretiming功能?李工2019/4/25星期四下午4:50:33用过SYNPLIFY的下午4:51:13李工2019/4/25星期四下午4:51:13VIVADO没有用过,应该就是一个选项吧。不要太在意那些,实际意义不大。很多是工具内部处理了,选不选差别不大李工2019/4/25星...原创 2019-04-25 23:08:40 · 1427 阅读 · 0 评论 -
关于case语句生成寄存器和锁存器的讨论
太极之道(45662410)下午9:57:30 你那个绝不是不是单纯posedge过程描述的 石小罡(1106256891)下午9:57:36 对 石小罡(1106256891)下午9:58:01 习惯性还是写全else 数字前端学生(2065604636)下午9:5...原创 2019-04-25 23:33:26 · 582 阅读 · 0 评论 -
关于HP,HR端口以及工艺和电压的对话
小飞侠各位问一个问题,IObank的类型有HPHRHD三种,一般在哪里可以查到器件的bank类型,今天拿到一个kc705,只能根据经验大致猜一下bank323334是hp,因为不支持3.3v和2.5v。但是总觉得有点没谱。有没有大神能解释一下?ota862019/5/8星期三下午11:19:03作者写书的时候,后续小节的代码没剔除干净,读者自己写的逻辑里没有访存相关时...原创 2019-05-08 23:30:39 · 2327 阅读 · 0 评论 -
PetaLinux 2019.1详细安装步骤以及所需要文件
这里主要根据UG1144文档,这两天成功安装使用了PetaLinux的最新版本2019.1一,在虚拟机里安装Ubuntu16.041,选Ubuntu 操作系统的版本是16.04,我最初尝试过18版本的Ubuntu但是不知道为什么速度特别慢,所以还是回头使用16.04版本。2,使用的vmware虚拟机版本是12.3,在虚拟机里安装Ubuntu16.04,我这里设置了逻辑盘大小是...原创 2019-06-14 15:53:12 · 13645 阅读 · 6 评论 -
在ZEDBOARD + PETALINUX环境中使用TFTP传输文件【之一】----TFTP客户端的使用方法
硬件:ZEDBOARD 或者兼容板子 (可以从SYSCLK.TAOBAO.COM购买便宜实用的国产板,本人出品技术支持)。嵌入式系统:PETALINUX 2019.1 使用 ZEDBOARD板级支持包编译出来的LINUX内核以及文件系统。PETALINUX 的系统文件里面包含了TFTP客户端。这是一个基于UDP协议的FTP类型的文件传输协议。跟标准的FTP相比,他不不使用复杂的...原创 2019-06-25 22:50:35 · 1980 阅读 · 0 评论 -
在ZEDBOARD + PETALINUX环境中使用TFTP传输文件【之三】----用TFTP实现文件互传
上述之一讲了嵌入式LINUX中tftp命令的使用。上述之二讲了WIN下简历TFTP服务器。这个BLOG我们实现一下两者的互联,用嵌入式LINUX 的TFTP客户端连接WIN的服务器端,实现文件的上传和下载。连接好网络,将ZEDBOARD和电脑连在同一个路由器下。首先使用ping 192.168.1.102 来确定网络是否连通。之后将tftp服务器端的image.ub文件下载下来...原创 2019-06-26 00:08:56 · 1160 阅读 · 0 评论 -
关于双时钟fifo的延迟问题
这里群讨论里面的记录 414371872 群号先贴在这里。含笶半歩顛(764723019)16:37:32@李工请教一个问题。我用FIFO的IP弄了一个FIFO,发现wr_rst_busy要再wr_clk,和rd_clk都有的时候,经过若干个始终周期后才跳变为0.请问下为什么含笶半歩顛(764723019)16:37:40异步FIFO。太极之...原创 2019-06-28 16:43:48 · 2924 阅读 · 0 评论 -
又一个因为时钟精度而导致的问题
来自 ZEDBOARD 学习讨论QQ群414371872 12:55:36 请教各位一个问题啊,a7100TFGG676,之前的2个GTPbank共用一个时钟,现在专门又做了一版PCB,2个GTPBANK,各自独立时钟。但是现在无法实现,每个GTPbank单独设置光模块速率。是不是哪儿设置有问题。 逐 12:57:03 ...原创 2019-06-28 16:55:49 · 488 阅读 · 0 评论 -
关于ZEDBOARD上PROG按键以及ZYNQ中PROG脚的作用的分析
人在草木中2019-07-06下午1:33:03李工,启动Linux的问题解决了,我再问个问题,视频3,PL端下载进比特流文件后,FPGA跑起来了,按一下板子上BTN6,就是写了个PROG的那个按钮,程序就不跑了,这是为啥?那个按钮是PL端的复位按钮吗人在草木中2019-07-06下午1:33:34按完复位FPGA应该也会从头跑啊mcupro2019-07-06下午...原创 2019-07-06 17:49:22 · 2576 阅读 · 0 评论 -
Zedboard + AD9361底层接口的分析 之三 AXI_AD9361模块的分析
这个AXI_AD9361模块跟上述分析仪的PACK和UNPACK模块相比,除了连接片内其他模块之外还连接AD9361芯片。应该说是AD9361跟内部其他模块的接口。我们来看看都链接那些9361芯片的引脚:上图中黄色线是链接9361模块的,我们再放大看看:在模块左边的脚是输入接收AD9361芯片的输出。右边的脚是输出给AD9361芯片。各自分析一下这些脚:...原创 2019-08-20 11:34:53 · 4610 阅读 · 0 评论 -
up_axi 一个将axi_lite接口转换成寄存器接口的模块
这是ADI提供的小模块。1,加入了防止死机的判断,8个周期后没有完成操作自动相应ack总线。2,会一直保持up_wreq,直到master端撤销写请求。这就需要检测第一个up_wreq的跳变作为实际的写,或者有严谨的握手信号处理。`timescale 1ns/100psmodule up_axi ( // reset and clocks up_rstn...原创 2019-08-20 11:40:44 · 1885 阅读 · 3 评论 -
mul_u16 五级流水线无符号乘法器
module mul_u16 ( // data_p = data_a * data_b; clk, data_a, data_b, data_p, // delay interface ddata_in, ddata_out); // delayed data bus width parameter DELAY_DATA_WIDTH =...原创 2019-08-20 12:24:58 · 1488 阅读 · 1 评论 -
PL通过EMIO方式外接PHY芯片的实验
这里介绍了一种ZYNQ7在PL部分外接ETHER 的PHY芯片实现PS扩展以太网的方式。原创 2017-10-26 18:45:22 · 4391 阅读 · 1 评论 -
宽度和长度都可配置的REG
module wb_io( input clk, input[1:0] d, output [1:0]q ); regs #(2,4)regs(.clk(clk),.d(d),.q(q)); endmodule module regs#(parameter DATA_WIDTH=1,原创 2013-08-11 15:28:30 · 1006 阅读 · 0 评论 -
ZEDBOARD 视频扩展板子上实现HDMI,代码
1,www.fpga4fun.com是一个非常好的站,深入浅出讲解。此代码主要部分来源于其HDMI部分的代码。2.,使用SYSCLK.TAOBAO.COM购买的兼容ZEDBOARD板子以及视频输出扩展板。3,实现了640X480 分辨率输出:4,需要两个时钟,一个是像素点时钟PIXCEL—CLK ,另外一个是10倍于PIXCEL_CLK的HDMI数据输出时钟。当640X原创 2016-10-13 16:07:07 · 4539 阅读 · 4 评论