
总结和计划
文章平均质量分 73
mcupro
这个作者很懒,什么都没留下…
展开
-
openofdm初探之一: 运行仿真
openofdm是github上一个项目,这个项目实现了ofdm的解码,我记录一下自己的探索过程。刚刚搞明白了如何仿真,这里记录一下分享给大家。1,sudo apt-get install git iverilog gtkwave make -y2,sudo gitclone https://github.com/jhshi/openofdm3,在步骤2的执行目录多了一个openofdm目录,进入这个目录。cd openofdm。4,cd verilog之后进行make ,出现了...原创 2021-11-08 04:44:08 · 2713 阅读 · 1 评论 -
做一个FSK的收发试验 之五
其实一个项目最重要的是在规划和实现,在规划和实现上多动脑子,多花时间,后续调试会很顺利。现在进行最终的调试了。从效果上进行检查就是在bb_bit_in输入,之后在bb_bit_out输出,看输入输出是否对应。作为比较简单的测试我们可以在bb_bit_in接入一个计数器,每秒变化一次,之后在bb_bit_out接一个led,看LED是否正常闪烁。我做过这步成功后,我使用了一个PMOD...原创 2020-02-26 20:40:50 · 567 阅读 · 0 评论 -
自己写的一个非常简洁的DDS信号发生器以及验证
DDS其实就是输出点,直接画出波形。例子1,假设基带采样时钟是360M,如果每个完整的正弦波形用360个点画出来,构造出来的DDS波形是360M/360=1M。例子2,在同样的采样时钟之下,如果我们要DDS出一个0.5M的波形怎么办呢:其实就是用360M/0.5M=720个点。就是说我们用720个点构造出一个完整正弦波。如果我们的sin表是由360个数值对应0-359度,...原创 2020-02-25 15:49:29 · 774 阅读 · 1 评论 -
做一个FSK的收发试验 之二
有了上述的代码我们尝试攒在一起,进行仿真一下。这里直接将接受和发送都放在一起进行测试。写代码如下: module tb ;reg clk=;always #5 clk = !clk ; reg bit_in;wire bit_out;wire [11:0]sin,cos ; reg [15:0]c ;always@(posedge clk )c <= (c==...原创 2020-02-25 02:41:20 · 682 阅读 · 0 评论 -
一个非常棒的CDC实现方法
//// Copyright 2014 Ettus Research LLC// Copyright 2018 Ettus Research, a National Instruments Company//// SPDX-License-Identifier: LGPL-3.0-or-later//module synchronizer #( parameter WI...原创 2020-02-25 01:36:10 · 794 阅读 · 1 评论 -
发一个信号边缘检测的小模块
我们来检测一个信号上升边沿或者下降边缘的到来,可以用此小模块:/*edge_det edge_det(.clk(),.sig(),.pos(),.neg());*/module edge_det(input clk,sig,output reg pos,neg);reg [2:0]r ;always @ (posedge clk) r[2:0] <= {r...原创 2020-02-25 01:25:33 · 352 阅读 · 0 评论 -
使用官方的HDL试验ADC数据 之一
这里主要是对DAC数据通道的UNPACK模块进行分析和替换。DAC就是发射部分,就是基带通过DDS方式“画”出波形,供给9361进行混频和发射。我们官方HDL项目里面提供了从内存DDR3到AD9361引脚的数据通道。我们之前的BLOG都已经分析了,这里再简单回顾一下。首先使用AXI_DMAC,将数据经过PS的HP高速接口从DDR3取出。这里取出来是64位的,我们要根据实际要发送的是2T还是...原创 2020-02-23 22:41:30 · 1644 阅读 · 3 评论 -
使用官方的HDL试验DAC输出 之三
使用自己的my_pack模块,之后加入到系统替换以前的:之后看逻辑分析仪的结果,以下是1R1T模式:看到模块比以前延迟小了几个周期,但是结果一致。再看2R2T模式:结果完全一样。达到了替换的目的。这里再次贴出我写的这部分代码.module my_pack (input rst , clk,input enable0,enable1,enable2,e...原创 2020-02-23 03:13:50 · 462 阅读 · 0 评论 -
使用官方的HDL试验DAC输出 之一
官方的AD9361接口做得很完善,我觉得应该花时间研究透彻。正好这段时间难得的安静,我就专门做做试验研究学习一下。AXI_AD9361这个模块咱们之前的博客分析了几次,今天试验ADC的输出,看看ENBALE,VALID和数据这三者之间关系。其实查看代码可以看到ENABLE是处理器通过AXI LITE接口设置,而VALID是用于数据通讯进行数据指示的。为什么要有这两个信号呢,我的猜测(后续查...原创 2020-02-22 23:39:08 · 1338 阅读 · 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 · 280 阅读 · 0 评论 -
检查zynq710核心板子的记录-4 (STEP7)
STEP7:检测ALL_IIC.SCHDOC这个文件。这里就是一个I2C的集中器芯片,连接多个I2C外设。思路比较简单。检查一下是不是每个线都连接好了。每一个原件检查一下封装。都没有问题就可以PASS。...原创 2020-02-21 01:01:46 · 195 阅读 · 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 · 384 阅读 · 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 · 184 阅读 · 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 · 1031 阅读 · 0 评论 -
对AD9361的数据接口延迟设置的分析和记录
通过参看AD9361的寄存器说明手册,收发数据线的时钟和数据DELAY 各自是16级可调打印出了NO-OS代码写006,007号寄存器的操作:Hello Worldlw:reg[6]=0x04lw:reg[7]=0x70lw:ad9361_dig_tune_rxlw:ad9361_dig_tune_delaylw:reg[6]=0x00lw:reg[6]=0x01l...原创 2020-02-08 20:32:04 · 5975 阅读 · 4 评论 -
AD9361 的NO-OS代码命令
基本涵盖了ad9361_api.c里面的全部函数,写在这里备份。Available commands:help? - Displays all available commands.register? - Gets the specified register value.tx_lo_freq? - Gets current TX LO frequency [MHz].tx_lo...原创 2020-02-08 16:46:32 · 3730 阅读 · 3 评论 -
随便贴一个自己用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 · 298 阅读 · 0 评论 -
AD9361 随笔记录 AXI_AD9361模块的分析之对外接口篇
之前对官方的AXI_AD9361这个模块内部的输入输出接口进行了详细的分析,分析的详细视频发布在自己所卖板子的配套的教程视频里面。这里我们从AXI_LITE寄存器层面进行分析,看看控制总线接口对外公布了多少寄存器以及各自的功能。下图表示了在系统中的位置:我们先来看接口:分这些部分:1,接AD9361的引脚,如下图:具体输入有rx_clk_n,r...原创 2019-12-16 13:01:31 · 6483 阅读 · 2 评论 -
verilog写的一个简洁实用的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 ); r...原创 2019-07-05 14:24:36 · 3101 阅读 · 0 评论 -
是你去主动找工作,和主动工作
记录 ZEDBOARD学习讨论QQ群 414371872无13:45:40有了解君正集成或者瑞斯康达的同学么怪13:54:52有啊怪13:54:59你啥职位怪 13:55:21群主在君正呆过无13:56:12群主在君正呆过!怪13:56:32是李工(715713994) 14:10:08@无语 也看到你单独问我来。好久前的事儿了,他们都重组好几次了,路线也变过...原创 2019-06-28 16:59:52 · 424 阅读 · 0 评论 -
又一个因为时钟精度而导致的问题
来自 ZEDBOARD 学习讨论QQ群414371872 12:55:36 请教各位一个问题啊,a7100TFGG676,之前的2个GTPbank共用一个时钟,现在专门又做了一版PCB,2个GTPBANK,各自独立时钟。但是现在无法实现,每个GTPbank单独设置光模块速率。是不是哪儿设置有问题。 逐 12:57:03 ...原创 2019-06-28 16:55:49 · 501 阅读 · 0 评论 -
群里关于一个硬件电路的讨论,纹波大导致烧坏主芯片
来自ZEDBOARD 学习讨论QQ群 414371872的聊天记录梧桐树下(624018797) 11:14:21板子用着用着,不知什么问题,1.8V对地的电阻就变成10欧了李工(715713994) 11:14:45主芯片挂梧桐树下(624018797) 11:14:50这种情况一般是不是只能换fpga了啊李工(715713994) 11:15:27最好排除隐患后再换...原创 2019-06-28 16:52:09 · 2808 阅读 · 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 · 2939 阅读 · 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 · 1167 阅读 · 0 评论 -
在ZEDBOARD + PETALINUX环境中使用TFTP传输文件【之二】----在WIN下安装TFTP服务器
我们用的VMWARE虚拟机方式开发PETALINUX,如果在VMWARE虚拟机里面安装TFTP虚拟机,需要在虚拟机里设置成网桥的模式,这样才能保证虚拟机所在网络和本地局域网是一个网段。这稍稍有些麻烦,并且有时候VMWARE设置会失效。所以我们这里直接在WINDOWS下设置TFTP服务器的形式。从网络上搜索tftpd32这个小软件,可以从我网盘下载:链接:https://pan.baidu....原创 2019-06-25 23:23:13 · 659 阅读 · 0 评论 -
在ZEDBOARD + PETALINUX环境中使用TFTP传输文件【之一】----TFTP客户端的使用方法
硬件:ZEDBOARD 或者兼容板子 (可以从SYSCLK.TAOBAO.COM购买便宜实用的国产板,本人出品技术支持)。嵌入式系统:PETALINUX 2019.1 使用 ZEDBOARD板级支持包编译出来的LINUX内核以及文件系统。PETALINUX 的系统文件里面包含了TFTP客户端。这是一个基于UDP协议的FTP类型的文件传输协议。跟标准的FTP相比,他不不使用复杂的...原创 2019-06-25 22:50:35 · 2001 阅读 · 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 · 13752 阅读 · 6 评论 -
ZYNQ系统PS部分挂载DDR3型号在VIVADO里面列表里面不存在如何解决
QQ群:414371872 李工(715713994)上午10:30:31 是DDR3哈 3079762899(3079762899)上午10:32:17 李工,然后呢 李工(715713994)上午10:35:46 找几个相近型号试试 李工(715713994)上午...原创 2019-04-25 23:21:56 · 1880 阅读 · 1 评论 -
关于XILINX 中动态配置时钟模块 MMCME2_ADV
kindly(773566320)下午9:20:08@李工李工,你弄过sp6的动态锁相环吗GaN(1009757565)下午9:21:28@kindlyDemo板,我拿来验证寄存器设置。kindly(773566320)下午9:22:10噢,哦李工(715713994)下午9:22:25@kindly没有,只是看过,没实际搞过李...原创 2019-04-25 23:18:44 · 4278 阅读 · 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 · 1439 阅读 · 0 评论 -
RISCV 模拟器器中位扩展的C语言实现
unsigned int ext_s (unsigned int val ,unsigned int hi_bit){ int i ; unsigned int r = 0 ; unsigned int flag_bit; flag_bit = (val & (1<<hi_bit) )?1:0; for(r=0,...原创 2019-02-16 23:21:10 · 769 阅读 · 0 评论 -
关于RISCV存储器访问指令的分析
RISC V 32I 指令访问存储器指令有load和STORE两类。这里说的load就是从存储器memory里面读出数据到寄存器组register files。而store正式相反的方向。无论是load还是store我总结都有如下特点:1,地址的生成都是一个寄存器的数值+一个立即数的偏移量(此立即数是有符号扩展)。2,都是直接跟寄存器进行数据交换,也就是从寄存器到存储器不存在运算,都是...原创 2019-02-15 21:49:16 · 3959 阅读 · 0 评论 -
RISCV32的指令集合的简单分类
这里我们只说RISCV32I指令集,这里按照我的理解给RISCV32I的指令做一个简单的分类:首先是可以由编译器生成的指令和编译器通常不会生成的指令(这里排除了C语言里面内联汇编的情况)。编译器不会生成的指令如下几条:FENCE,FENCE.I,ECALL,EBREAK,CSRRW,CSRRS,CSRRC,CSRRWI,CSRRSI.CSRRCI,以及AUIPC。其中FENCE...原创 2019-02-14 23:37:44 · 6612 阅读 · 2 评论 -
建立RISCV32的工具链
这里以UBUNTU系统为例子, 1,首先需要安装以下包。# Ubuntu packages needed:sudo apt-get install autoconf automake autotools-dev curl libmpc-dev -y sudo apt-get install libmpfr-dev libgmp-dev build-essentia...原创 2019-02-14 22:28:09 · 2454 阅读 · 0 评论 -
一种FSM编码套路和RTL图的分析对话
不跨时钟域一般不用考虑fsm编码格式。FPGA综合器一般会转成热独码。 这都可以哈 不用纠结 能让综合器 编译器做的事情 自己写代码时候就不需要费心 这个状态机 和标志位 是一个意思吗?mcupro 2018-12-24 14:56:11基本一个意思吧 都是个记号记录当...原创 2018-12-24 15:32:31 · 442 阅读 · 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 · 204 阅读 · 0 评论 -
经典的单时钟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 · 669 阅读 · 0 评论 -
PL通过EMIO方式外接PHY芯片的实验
这里介绍了一种ZYNQ7在PL部分外接ETHER 的PHY芯片实现PS扩展以太网的方式。原创 2017-10-26 18:45:22 · 4450 阅读 · 1 评论 -
PMODAD1 实现模拟数据的采集 实现篇1
从硬件篇我们看到一个PMOD模块包含了两路ADC,他们公用SCLK和CSN,只是有两路各自的DATA输出,因此我们将采集模块简单修改一下,能同时采集两路,如下:module ad7476_sample(input clk,rst,input ADC_sdata0, ADC_sdata1,output reg ADC_sclk,ADC_csn,output reg [11:0] adc_原创 2017-06-30 16:13:24 · 1385 阅读 · 1 评论 -
[zynq7 问题记录] ps 从axi总线读数据卡住了一般是什么原因导致的
1,没有烧写逻辑。2,读了一个VIVADO没有分配的地址。3,AXI外设接口编写有问题,没有回复各种READY 。4,如果是SDK在线运行,上述三个方面确保了,就按照下面步骤进行, 从新给板子上电,烧写BIT,启动PS。5,如果是SD卡或者QSPI FLASH 启动,检查完上述1,2,3,再检查一下文件是否拷贝对。sysclk.taobao.com原创 2017-03-19 18:13:01 · 3748 阅读 · 1 评论