寒听雪落
这个作者很懒,什么都没留下…
展开
-
FPGA SPI采集ADC7606数据
当数据完成转换后,CS为电平期间,每个时钟的上升沿完成数据的采样,这里有一个FRSTDATA的表中,代 表每次转换的第一个数据,这里实际可以不用这个信号,因为每次CS之后的第一个上升沿时钟我们就是开始采样数据,每16次完成一路ADC的采集。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。在5us的采样周期内,可以看到convsta/convsta从高到低后,AD转换开始,busy信号变高,之后CS变低,可以看到CS的结束在busy信号后,所以可以确保最后读取的数据时已经转换好的数据。原创 2024-06-07 10:25:47 · 1283 阅读 · 1 评论 -
verilog报错处理集合
解决方案:在约束中添加。set_property SEVERITY {Warning} [get_drc_checks NSTD-1]set_property SEVERITY {Warning} [get_drc_checks RTSTAT-1]set_property SEVERITY {Warning} [get_drc_checks UCIO-1]原创 2024-06-07 10:47:52 · 199 阅读 · 0 评论 -
verilog阻塞和非阻塞语法
这个程序是阻塞和非阻塞的混合使用,不理解的话乱用会导致时序违规,为了更好的理解阻塞赋值:当时钟上升沿来临的时刻,首先 A 会被置 1,然后 B 寄存器再置 1。的时候,A=0 和 B=0;阻塞和非阻塞是FPGA硬件编程中需要了解的一个概念,绝大部分时候,因为非阻塞的方式更加符合时序逻辑设计的思想,有利于时钟和信号的同步,更加有利于时序收敛,所以除非特殊情况,尽量采用非阻塞方式。整个过程耗时一个时钟。非阻塞赋值,A和B是同时被赋值的,具体是说在时钟的上升沿来的时刻,A和B (或调换A和B)同时被置1。原创 2024-06-07 10:42:18 · 265 阅读 · 0 评论 -
verilog 232串口通信程序
通常串口的一次发送或接收由四个部分组成:起始位S、数据位D0~D7(一般为 6 位~8 位之间可变,数据低位在前)、校验位(奇校验、偶检验或不需要校验位)、停止位(通常为1位、1.5位、2位)。在一次串口通信过程中,数据接收与发送双方没有共享时钟,因此,双方必须协商好数据传输波特率。通常对串口进行数据采样,采用更高频的时钟。具体的工作流程为:发送端按照预先设定好的波特率,发送起始位(Start)+数据位(data)+奇偶校验位+结束位。起始位为逻辑 0,结束位为逻辑 1,发送端在空闲状态为 1。原创 2024-06-07 10:05:48 · 205 阅读 · 0 评论 -
使用verilog实现JESD204B接口
对于utrascale器件,频率范围为10MHZ~200MHz,对于7系列器件,如果IP核的模式为“Include Shared Logic in example design”,则频率范围为10MHZ-200MHz;ADC/DAC的采样速率变得越来越高,数据的吞吐量越来越大,对于500MSPS以上的ADC/DAC,几十个G的数据吞吐率,采用传统的CMOS和LVDS已经很难满足设计要求,JESD204B应运而生。链路层负责链路的建立,数据传输。JESD204B包括3个子类,分别是子类0,子类1,子类2;原创 2020-06-24 16:21:44 · 5481 阅读 · 1 评论 -
lattice hdl实现spi接口
定义硬件SPI接口的管脚。配置SPI时钟和模式。编写SPI主机或从机的控制逻辑。顶层:spi_slave_top.v。原创 2024-06-13 00:04:40 · 258 阅读 · 0 评论 -
testbench仿真文件编写规则
finish(n) //带参数系统任务,根据参数 0,1 或 2 不同,输出仿真信息 //0:不输出任何信息 //1:输出当前仿真时刻和位置 //2:输出当前仿真时刻、位置和仿真过程中用到的 memory 以及 CPU 时间的统计 $random //产生随机数。如果并列的两个模块里面,模块A有某个信号(仿真时绿色线),一个模块B里面没有 某个信号(仿真时候蓝色线或绿色线没数据),说明上一层的封装A没有将该信号传给B。//定义封装模块的时候,只定义整体来 看的reg和wire。原创 2024-06-07 11:17:24 · 292 阅读 · 0 评论 -
verilog状态机的使用
case和endcase(用于状态机编写)原创 2024-06-07 10:45:23 · 40 阅读 · 0 评论 -
FPGA高速QDR IP功能和调用
Quad Data Rate II+存储装置是QDR SRAM系列存储器最新成员,其数据率可达250 MHz以上。Quad Data Rate II+系列SRAM是用于高带宽、低延迟应用的理想选择。读、写端口独立工作,设计人员可使用其最大带宽且无须担心其它存储器件常见的总线冲突问题。QDR II+存储器件的高带宽和低延迟特性使得其在高宽带应用中成为查找表、链接清单和控制器缓冲存储器的常用存储器。1,QDR IP核的输入输出信号。2,QDR IP核例化。原创 2020-08-11 22:27:15 · 3329 阅读 · 1 评论 -
verilog实现485串口半双工和全双工
RS-485接口的最大传输距离标准值为4000英尺,实际上可达 3000米,另外RS-232-C接口在总线上只允许连接1个收发器, 即单站能力。MAX485是一种实现RS485半双工工作模式的芯片,而RS485是一种串口通信标准,另外还有可以实现RS485全双工工作模式的芯片。切记:不是理论上RS485可以做到全双工,而是RS485本来就有全双工和半双工2种工作模式,RS485向下完全兼容RS422,两者亦有区别。RS485如果接成四线就是全双工,如果把输入和输出并接,并且只接两条线那么就是半双工的了。原创 2024-06-07 00:18:37 · 338 阅读 · 0 评论 -
verilog reg和wire和assign语法
若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型。要是出现不能给input赋值,那么就reg产生一个输出,与它进行封装连接,直接操作reg就可以了;在理解上,相当于一个逻辑之后直接连了一条线,这个逻辑对应于表达式的右侧,而这条线就对应于wire。在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,而这个变量可以声明成reg类型的。wire表示直通,即只要输入有变化,输出马上无条件地反映,线信号;2、{{ }}表示复制,{4{a}}等同于{a,a,a,a};原创 2020-08-20 09:55:29 · 14180 阅读 · 1 评论 -
lcd屏幕verilog显示
扫描从屏幕的左上方开始,从左 到右,从上到下,进行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置, 在这其间 CRT 对电子束进行消隐。VS(场同步信号)。完成一帧(整屏)扫 描的时间称为垂直扫描时间,其倒数称为场频率,即刷新一屏的频率,常见的有60Hz, 75Hz等等。1,外部输入时钟和复位信号,外部输入的时钟经过PLL产生用于VGA 图像输 出所需要的时钟,并以 PLL 产生的时钟用来驱动VGA_GEN模块开始工作,来产 生行场同步信号,输出图像数据等,最终在LCD显示器上显示一个移动的方块。原创 2024-06-06 23:36:01 · 62 阅读 · 0 评论 -
FPGA verilog lvds数据传输
LVDS 器件电气特性是否兼容主要看,VODIF,VOCM,VIDIFF,VICM,可以看到,LVDS25 和 LVDS 的差分电气特性是兼容的。VOCM 输出共模电压,最小 1V 最大 1.425V,典型值 1.25V。VOCM 输出共模电压,最小 1V 最大 1.425V,典型值 1.25V。VICM 输入共模电压,最大 1.5V,最小 0.3V,典型 1.2V。VICM 输入共模电压,最大 1.5V,最小 0.3V,典型 1.2V。四,lvds代码举例:LVDS 自环测试。二,LVDS 电气特性。原创 2024-05-30 15:17:07 · 352 阅读 · 0 评论 -
DMA IP核的详解与实现
在异步时钟下,s_axi_lite_aclk时钟小于m_axi_sg_clk时钟小于m_axi_mm2s_aclk时钟或者m_axi_s2mm_aclk。同步时钟,m_axi_mm2s_aclk、m_axi_s2mm_aclk和m_axi_sg_clk使用相同的时钟源,s_axi_lite_aclk采用较低的时钟源,同步时钟,m_axi_mm2s_aclk、m_axi_s2mm_aclk和m_axi_sg_clk使用相同的时钟源,s_axi_lite_aclk采用较低的时钟源。原创 2022-08-13 09:52:00 · 9126 阅读 · 0 评论 -
AD9914编程和功能引脚
在并行模式中,32引脚端口(位[31:0])分为3组,它们分别是:由16个数据位组成的位[31:16]、由8个地址位组成的位[15:8]、以及由3个控制位组成的位[2:0]。图41中的表格使用DDS的频率(FTW[31:0])、相位(POW[15:0])和幅度(AMP[15:0])参数识别位[31:0],从而显示32引脚并行端口的分段。该32引脚并行端口组成一个32位字,以位[31:0]表示(31表示最高有效位(MSB),0表示最低有效位(LSB)),4个功能引脚以F[3:0]表示。当其有效时,暂停扫描。原创 2020-05-21 13:47:21 · 6924 阅读 · 0 评论 -
片上资源FIFO用法
读 FIFO 的数据也只能读一遍,读完一遍 FIFO 就空了,需要再往 FIFO 写数据才能读出新数据,否则读出的数据一直是最后一次读 FIFO 时的数据。此外还有 fifo 的空满信号,当 fifo 中写满数据的时候,full 信号拉高,当 fifo 中数据全部读出后 empty 信号拉高。Fifo深度设置为256,其中FIFO的深度必须是2的幂次方;1,FIFO写时序写端口数据在写使能拉高的情况下,每个时钟周期 将待写入的数据,写进 FIFO 中,当 FIFO 写满时,full 信号拉高。原创 2020-09-22 21:46:28 · 9036 阅读 · 1 评论 -
FPGA使用以太网UDP传输数据
最大值 1500 称 为以太网的最大传输单元(MTU,Maximum Transmission Unit),之所以限制最大传输 单元是因为在多个计算机的数据帧排队等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差,这就像一个十字路口的红绿灯,你可以 让绿灯持续亮一小时,但是等红灯的人一定不愿意的。其中绿色部分是IP首部,蓝色部分是数据部分,IP首部中包含了IP数据报报文的相关信息其中IP首部为20字节,相关的信息在下图中展示,我们接下来看看各个字段的含义。原创 2020-07-12 14:35:20 · 17578 阅读 · 1 评论 -
verilog实现直流电机的方向和速度控制
输入控制模块:用于按键输入的消抖以及pwm占空比的设置,电机的转向控制。pwm波形发生器模块:用于产生pwm波。需要进行测速模块:用于测量电机的相对速度。原创 2024-06-03 21:00:46 · 72 阅读 · 0 评论 -
Vivado关联Modelsim并仿真
7,新建环境变量(环境变量在“我的电脑--属性--高级系统设置--环境变量”), 变量名为 PATH,变量值为上面 LICENSE.TXT 文件的路径,如我的是 C:\Program Files\Modelsim\LICENSE.TXT。6,以管理员身份运行上面复制到安装路径的patch64_dll.bat,保存生成的LICENSE.TXT文件文件到安装目录下面,如我的保存的目录是 C:\Program Files\Modelsim。2,选择安装路径,注意安装路径中不要存在中文,点击下一步。原创 2020-07-14 21:14:40 · 3691 阅读 · 0 评论 -
FPGA设计中约束设计和时序分析方法
其中,[IN | OUT] 说明约束是输入还是输出,”offset_time”为FPGA引脚数据变化与有效时钟之间的时间差,[BEFORE | AFTER]说明该时间差在有效时钟沿的前面还是后面,”clk_name”时钟名,[TIMEGRP “group_name”]定义约束的触发器组,缺省时约束clk_name驱动的所有触发器。FROM_TO在两个组之间定义的约束,对二者之间的逻辑和布线延迟进行控制,这两个组可以是用户自定义的,也可以预定义的,可以使用TNM_NET、TNM和TIMEGRP定义组。原创 2024-05-30 15:19:00 · 51 阅读 · 0 评论 -
复旦微开发过程中遇到的问题总结(二)
十八,复旦微用第三方烧写工具烧写到flash,启动时候fsbl是新的,但app总是跳到之前烧写过的一个程序中?二十一,现象:QSPI启动时候,级联模式下用JTAG扫描,vivadio扫描不到FPGA,但是用jlink 仿真器,process上可以扫描到一个FPGA,还是不能扫到ps。十六,现象:使用qspi 启动,级联模式下,把JLINK挂到PL的JTAG上去下载ps的程序。操作步骤:优先使用级联模式,JTAG独立级联模式都可以,QSPI启动级联模式不行,独立模式可以扫到PS和PL。原创 2021-11-22 00:41:11 · 5541 阅读 · 0 评论 -
复旦微开发过程中遇到的问题总结(一)
启动时候qspi不可以串行io访问,如果可以的话,那就bin就可以超过16MB。但是先下载PL把JLINK打通然后用JLINK下载到QSPI程序,第一次没问题(在这次之前都可以正常烧录),但是JLINK把这个下载完后,再次烧录的时候,发现JLINK灯红绿闪烁并下载失败无法连接。十三,7045程序跑起来以后,有什么办法通过串口给ps发指令,然后通过pl jtag在线加载bit,加载完成后通知ps继续运行,ps程序裸跑,不重新加载,也就是能随时在线跟新PL bit程序运行而又不影响PS程序造成死机?原创 2020-03-18 22:54:42 · 11249 阅读 · 0 评论 -
HMC833 PLL时钟控制芯片读写操作寄存器
然后对芯片进行写数据测试,主要测试数据有两组740M和2270M,740M的测试结果为输出幅度30dBm,且杂散较大,分别为1、2、3倍频,与740M幅度相差为-16dBc,但由于其频率相差加大,可以在后端接滤波器以做改善。原因:在740和2270MHz输出频率的测试之后,还对从 740~2000M依次20M频率步进做了测试,发现杂散的出现主要为当前输出频率的倍频,随着频率的升高,杂散间的频率间隔等比增大,在频率上到1800M时在频谱仪中以3GHZ的Span,观测时已无法观测。(2)SCLK=0;原创 2020-09-08 18:05:59 · 19019 阅读 · 0 评论 -
HMC7043和HMC7044芯片配置使用
HMC7044时钟抖动衰减器可在数据转换器系统中产生源同步且可调的样本和帧对齐(SYSREF)时钟,使JESD204B系统设计得以简化。第一个PLL将一个低噪声、本地压控时钟振荡器(VCXO)锁定至噪声相对较高的参考,而第二个PLL将VCXO信号倍频至VCO频率,仅增加非常小的噪声。对于蜂窝基础设施JESD204B时钟产生、无线基础设施、数据转换器时钟、微波基带卡和其它高速通信应用,HMC7044架构可提供出色的频率产生性能,相位噪声和积分抖动均很低。(4),寄存器地址参数控制配置。原创 2024-04-06 18:06:35 · 1596 阅读 · 2 评论 -
lattice fpga diamond开发软件安装流程
diamond_license.dat 是不需要个人网卡地址的license ,直接建立 LM_LICENSE_FILE 环境变量,设定目录就可以。添加licence,licence下载地址http://files.latticesemi.com/Diamond/3.12/3.12.0.240.2_Diamond.zip。点击yes安装lattice仿真器驱动和next。双击桌面快捷方式,打开后点击I accept。点击browse填入安装路径,点击next。安装后如下,点击确定。点击next开始安装。原创 2022-10-01 06:00:00 · 2443 阅读 · 0 评论