日拱一卒
文章平均质量分 51
每日进步一点点
liuchj04
这个作者很懒,什么都没留下…
展开
-
【verilog 设计】 reg有没有必要全部赋初值?
在知乎发现“reg有没有必要全部赋初值”这个问题,与自己近期对Verilog reg的进一步学习相契合,此文对这个问题进行总结。原创 2024-04-16 21:47:00 · 1784 阅读 · 0 评论 -
xilinx fpga 程序固化(含sdk)
xilinx 旗下的产品主要有包含有处理器的系列,也有只有纯逻辑的fpga,两者的程序固化的方法并不相同,本文介绍含有处理器或者microblaze中有程序的固化。原创 2024-04-09 22:29:14 · 1262 阅读 · 0 评论 -
xilinx fpga程序固化(不含sdk)
xilinx 旗下的产品主要有包含有处理器的SOC系列,也有只有纯逻辑的fpga,两者的程序固化的方法并不相同,本文介绍只包含纯逻辑而不涉及处理器的fpga的代码固化。将工程综合,实现,并得到比特流后,开始固化程序到片外非易失性存储器中。2.2 将存储器配置文件固化到flash。2.1 生成*.mcs存储器配置文件。原创 2024-04-02 22:30:37 · 1079 阅读 · 1 评论 -
【vivado】ILA使用心得
ILA抓取的信号数量和深度应尽可能的少,如无必要,不要加到ILA中观测。ILA主要用于验证,而不要主要用于debug。原创 2024-03-28 19:22:04 · 177 阅读 · 0 评论 -
【vivado】在原有工程上新建工程
该方法的缺点为:新工程只有工程文件夹及vivado自动生成的一级目录及其子目录的文件夹。至于自己新建的与一级目录并列的其他文件目录及其子目录则不会被带到新工程文件路径中,而是索引的原工程下的文件。在工作中,我们经常需要接触到别人的工程,并在别人的工程上新加设计功能,此时我们需要以别人工程为基础新建工程。该方法的优点为:可以直接修改整个工程及工程子目录的文件路径名称为新的工程名,并且可以自由选择位置。该方法的缺点为:所有的一级目录与原工程完全相同,若修改的话需要一个一个修改,也很麻烦。原创 2024-03-27 21:04:45 · 757 阅读 · 0 评论 -
verilog设计-CDC:单bit脉冲快时钟域到慢时钟域
当单bit信号由快时钟域传递给慢时钟域时,快时钟域的异步信号最小可为快时钟信号的一个时钟周期脉冲,快时钟域的单时钟周期脉冲长度小于慢时钟域的时钟周期,很有可能该脉冲信号在慢时钟域的两个时钟上升沿之间,导致该脉冲没有被慢时钟域采集到,从而导致信号数据丢失。因此与单bit信号从慢时钟域到快时钟域直接打两拍不同,单bit信号从快时钟域到慢时钟域还需要特殊的处理。原创 2024-03-21 23:25:54 · 1204 阅读 · 0 评论 -
【vivado】ILA使用
4)ILA信号过多影响时序收敛,甚至影响设计功能,比如JESD204204B协议恢复时钟驱动的很多信号被添加到ILA中观测后可能会导致建链不稳定。使用ILA IP核或者在相应信号或者端口前添加(* mark_debug = "true" *)后实现相应波形观测。3) 如果需要新加debug信号,需要重新做ILA,再Place&Route,费时费力;虽然ILA在一些情况下比较好用,但不建议靠ILA来debug。1) ILA分析的波形长度有限;2) ILA抓取的信号数量有限;原创 2024-03-19 22:04:31 · 1018 阅读 · 0 评论 -
【vivado】时序约束-set_false_path
false path指逻辑上存在,但不需要分析是否满足建立/保持时间的时序路径。使用set_false_path去不对指定路径其进行任何时序约束,进而在时序报告中屏蔽相关错误,但不会停止对其进行延迟计算,因为这条false path上的组合逻辑可能应用于其他的path。这一点区别于set_disable_timing,set_disable_timing完全不对路径做任何时序分析。原创 2024-03-18 23:29:44 · 2621 阅读 · 0 评论 -
【vivado】fpga时钟信号引入
如果设计时管脚分配没做好、或者管脚不够用了,那么就有可能将本该接入专用时钟管脚的信号,接到了普通IO口上,如果仅和从专用时钟引脚一样添加普通时钟约束时,此时vivado执行implement的时候往往就会报error或者critical warning、导致工程出现问题。FPGA的时钟信号一般由板上晶振经由时钟引脚引入,有时由于工程需要也会从pin脚引入其他外部时钟,这时为了该时钟能够正常工作,满足xilinx fpga的外部时钟引入规则。一、从专用的MRCC/SRCC时钟引脚引入。原创 2024-03-15 23:53:07 · 1066 阅读 · 0 评论 -
【vivado】 clock wizard 时钟IP
原因如下:与PLL输出时钟驱动的逻辑单元需要保持复位状态,直到PLL的LOCKED信号输出拉高为时,此刻表明时钟被锁定,PLL处于稳定的状态,因此LOCKED在设计常会用作复位信号。MMCM和PLL是在FPGA设计中不可避免需要使用到的时钟资源,对于其功能及使用方法的理解是正确进行FPGA设计的前提。clk_in 输入时钟,一般为班上晶振引入时钟或者serdes恢复时钟以及其他专用时钟引脚输入时钟;时钟IP会自动在综合实现中生成相应的时钟约束,因此不需要在约束文件中在对相关时钟进行时钟约束。原创 2024-03-12 21:48:17 · 2344 阅读 · 0 评论 -
【matlab】matlab函数拟合
(3) Fourier:傅里叶级数逼近,默认形式:f(x) = a0 + a1*cos(x*w) + b1*sin(x*w),在"Number of terms"中可以选择公式中正余弦项的个数,范围1~8。(4) Gaussian:高斯逼近,默认形式:f(x) = a1*exp(-((x-b1)/c1)^2),在"Number of terms"中可以选择公式中指数项的个数,范围1~8。(12) Weibull:威布尔分布,形式为:f(x) = a*b*x^(b-1)*exp(-a*x^b)。转载 2024-02-29 22:55:46 · 2326 阅读 · 0 评论 -
【matlab】matlab中两个数组交织合并成一个数组的方法
例子:a = [1 3 5] ,b=[2 4 6],将a,b,交织合并为c=[ 1 2 3 4 5 6].原创 2024-02-28 20:39:37 · 1238 阅读 · 0 评论 -
【matlab】matlab中多个字符串的拼接方法
4、%f 就是输出小数:%8.4f 就是小数点后保留4位,输出总长度为8,比如3.14159,输出后就是"_ _ _3.1415"(前面三个空格);3、%d 就是输出整型:%5d 就是说按照长度为5的整型输出,比如100,输出就是"_ _100","_"代表空格;可以按要求更改a1 b1的顺序,如果要a1和b1分开的话,可在a1最后加个空格或者在b1前加空格。可以按要求更改a1、b1的顺序,如果要a1和b1分开的话,可在c1中两个%s之间加空格。% 根据需要更改顺序,添加空格,方法同上。转载 2024-02-27 21:00:26 · 1553 阅读 · 0 评论 -
【Xilinx sdk】sdk中hw_platform自动增加的问题
在 Vivado 中生成并导出硬件描述后,复制工程或工程更改有时候会在 .sdk 文件夹下产生新的 hw_platform,例如原来的是 hw_platform_0,现在又产生了一个 hw_platform_1,hw_platform_2等。(1)关闭 Xilinx SDK 的情况下,备份 sdk 文件夹中的源文件,清空整个 sdk 文件夹,重新 launch sdk,再将源文件复制到工程目录下;Xilinx employee 给出的答案,并不能更改 BSP 的 Hardware Platform。原创 2024-02-26 22:22:28 · 899 阅读 · 0 评论 -
【Xilinx FPGA】IO命名规则
首先,FPGA的IO物理命名规则,也就是我们做管脚约束时候的命名,芯片通常是长方体或者正方体,所以命名通常采用字母+数字组合的方式,从上到下是字母(A,B,C,D```),从左到右是数字(1,2,3```),所以诸如:A13(见下图),就是图上标红的位置,这个是xilinx的一颗芯片示意图,其它厂商的FPGA芯片也类似。工程师都是写代码,但是作为硬件编程工程师,如果不熟悉FPGA的底层资源和架构,是很难写出高质量的代码——至少很难写出复杂逻辑的高质量代码,也很难站在系统的层面去考虑芯片的选型等问题。转载 2024-02-21 22:39:59 · 280 阅读 · 0 评论 -
【JESD204B】一直建链断链的一个原因
JESD204B后面信号添加太多MARK_DEBUG时,也会导致建链不成功。原创 2024-02-20 21:40:10 · 664 阅读 · 0 评论 -
【数字信号处理】采样定理
欠采样会导致频谱混叠,使得较高频率被折叠成较低的频率。当采样率等于信号频率时,恢复出的型号的频率为0。x(t)为频带有限信号,采样频率大于被采样信号最高频率的2倍时,则x(t)可以从样本值中准确恢复。原创 2024-02-19 22:48:29 · 494 阅读 · 0 评论