- 博客(32)
- 资源 (8)
- 收藏
- 关注
原创 XINLINX FPGA RAM使用-simple dual ram
write first的意思是在写入的同时,会同时输出的out上。在这个模式没有变化,可能是因为不存在冲突吧。以上用的是No change模式,接下来试下其他的模式,试了下write first,波形没有变化。仿真波形如下,可以看到portA写入的数据,可以从portb读出。相应的设置如下,这里使用的simple dual port。接下来试下ECC功能,勾选以后多了biterr位。现在vivado里选择IP->BRAM。Testbench如下。后面再试试如何使用,
2023-07-10 18:57:49 140
原创 关于SDRAM的拓扑前仿真
之前SDRAM速度较低,不太考虑信号完整性的问题。现在部分单片机的速度已经可以支持200MHZ的SDRAM,是不是需要考虑信号完整性问题?②两颗SDRAM,采用T形拓扑,看到TL1为0.5ns,支线0.1ns且等长,信号质量还可以。目前来看,只要注意下SDRAM在拓扑,在200MHZ以下,应该问题不大。④4个SDRAM如下,信号比较差了,可以考虑加个端接电阻。③如果要3个SDRAM.效果也还可以,不需要特别端接。(走线长度可以按6inch /ns进行估算)①单个SDRAM,可以看到波形基本OK。
2023-06-18 22:20:02 160
原创 HFSS,3D LAYOUT微带线宽度比较
如下嘉立创叠层工具有2种叠层,那么同样是50ohm的阻抗,是走线宽的好还是窄的好,我们接下来来比较下。结果如下,阻抗大概在47ohm左右,在60Ghz,S21在-3.6db。结果如下,可以看到在60G的情况下,S21略差。然后创建建立线宽0.3493mm的微带线,如下。现在工具中设定叠层,这里的叠层同方案1。接着我们开始仿真第二种结构,叠层如下。接下来把2种情况,放一起看看。
2023-06-05 22:30:54 432
原创 FPGA的组合逻辑的毛刺
在CNT小于10的时候,led_temp输出1.但实际情况cnt不是理想化的,寄存器翻转的时候会出现中间值。如下CNT从16变为17的时候,中间出现很多中间值,我们放大看下,16和17之间出现了数值4,这个就是实际电路,最终导致的结果就是出现毛刺。这里可以看到led_temp出现大量毛刺。功能仿真如下周期性的脉冲波形输出,咋一看没什么问题。解决方法就是多打一拍,如下LED就没有毛刺。如下所示的脉冲输出回路,那么进行功能仿真。使用组合逻辑的时候要特别注意毛刺的出现。那么为什么会出现毛刺呢,看下面这个语句。
2023-06-02 19:14:39 152
原创 XINLINX FPGA RAM使用-单口ram
波形如下,可以看到在第一个脉冲边沿,这时候地址为0,数据为37,WEA为高(写),第2各边沿,地址为1,数据为42。第三个边沿,WEA为低(读),且地址为0,读取数据为37.FPGA自带ram可以使用,先打开IP catlog,搜索ram。porta设置如下,其他保持默认。如下就是ram的IP。
2023-05-18 16:26:36 138
原创 FPGA仿真,状态机显示为ASIC码
关键是testbench的编写,这里需要把state重新映射下,看下always@(*)这里做了state状态的映射。我们在做FPGA仿真的时候,状态机显示的2进制,这个样子不是很直观。如下所示,接下来就是说明下如何显示为英文,方便我们的调试。最后记得把波形显示改为ASCII显示就可以。先做一个简单的状态机程序。
2023-05-18 11:22:28 157
原创 XINLINX原语学习 IDELAYE2
当CNTVALUEIN= 31,LD = 1延迟Tdelay=3.018ns=31x78(ps) +0.6ns;当CNTVALUEIN= 0;以下test bench测试结果。至此完成了IO的延迟。
2023-05-16 15:55:28 377
原创 linux驱动-定时器
设备树还是沿用gpio的设备树。定义下led的结构体,这里追加了timeperiod和timer_list。接下来编写app相关函数,timer_unlocked_ioctl函数里,可以修正定时器的参数。timer_function就类似单片机的中断函数,会定时执行。接下来platform的probe的函数。这里追加了3个函数。卸载函数,这里需要添加del_timer_sync.今天开始学习下linux的定时器。
2023-04-23 22:54:36 342
原创 LINUX驱动点灯
OK,以上就是LED的全部驱动了。解析来坐下APP程序,有2个传递参数,以下为例,含义如下。先定义入口和出口函数,这里的led_driver是platform_driver定义的。接下来编写下app的接口函数,这里包含open和write2个参数。./gpioapp /dev/jin-gpio-led 1 点亮。定义一个匹配列别,这里的compatible要和设别树一致。②完成后编译查看下设备树,可以看到设备树下新建了节点。记录下linux学习的过程,上来首先是点灯。OK,以上就是基本的LED驱动了。
2023-04-06 00:07:21 201
原创 ZYNQ 自定义IP
像BREATH_LED_IP_mWriteReg(XPAR_BREATH_LED_IP_0_S0_AXI_BASEADDR,BREATH_LED_IP_S0_AXI_SLV_REG0_OFFSET,1);就是写寄存器的值,对应的话就是把LED点亮。把AXI的slv_reg0[0]作为breath_led的输入。以上,因为其中有很多细节比较繁琐就不一一列举了,有问题可以留言。添加breath_led这个就是我们真正执行的程序了。今天的任务是用ZYNQ的PS核心,取访问自定义IP。例化的位置也相应添加。
2023-02-13 16:03:00 256
原创 python 串口通讯+波形显示
硬件方面是通过CH340虚拟串口上传ADC数据,波特率115200。效果如下,不知道怎么做动态效果,实际整个波形是向右边移动的。本次工程的目标是为了实现ADC采集信号的上位机显示。8-16行为串口通讯和实现显示的移动。42-43给串口单独开个线程。45-47定时刷新波形。18-19是显示线条。
2023-01-18 15:44:00 925
原创 高速信号线的参考面,换层(1)
我们先做一个6层的结构,S-G-S-G-P-S(S信号,G地,P电源)。过孔一般呈容性,可以看到过孔导致阻抗不连续,会导致S21,S22变差。改成如下结构,相比上一个结构,过孔的stub没有了。理论上只要是整块的金属面都可以作为参考面。可以看到增加回流孔后,S21参数有改善。②建立模型,信号线从第一层换到第三层。
2022-12-21 17:01:58 750
原创 高速信号的过孔设计
在高速信号传输过程中,过孔就不是一个单纯的孔。它会有各种寄生参数,从而影响信号的完整性。最明显的表征就是使阻抗不连续性。如下图:很明显可以看到阻抗不连续的两个点。回路的拓扑 回路的TDR曲线,很明显可以看到由过孔引起了阻抗的不连续。理论分析 过孔在PCB设计中地位不言而喻,它起到多个层叠之间的互连作用。过孔在不同的PCB形态中又分为通孔,盲埋孔。不管哪种孔都由孔焊盘,孔壁,反焊盘,非功能焊盘等几个部分组成。从过孔的结构来看,物理上面一定会有寄生效应。 那么具体有哪些影响?寄生电容近似公式 D1过孔焊盘直径(
2022-12-08 09:14:46 1078
原创 verilog 的FOR
看如下代码,这个语法的意思是把led[0]-led[7]同时置0,这里特别注意也是并行执行的。②看下仿真的结果,可以看到CNT到100_000的时候,LED的8都被置0了。虽然说可以用for,但是一般情况下尽量不要用,避免和C语言进行混淆。verilog是可以使用for但是功能和C是有点不一样的。
2022-11-23 18:32:25 1006
原创 关于高速信号跨平面的实例 sigrity POWER SI
但是不巧,设计的时候太赶了,出现了DDR跨平面的事情,现在就看看影响度。最后总结下,本次是因为时间太赶,导致的设计失误,而且本身运行频率不高,才没导致设计失败。实际做设计的时候,一定要遵守设计的规范,因为在高频的情况下,跨平面的影响是非常大的。⑦我切换到S21参数看下以为本次DDR3跑的频率是400MHZ,按图来看信号衰减的并不厉害,但是到更高频段就会出问题了。⑤那么关键来了,我重点看下跨平面的线是S参数。⑥具体看下走线,的确是跨平面了。②选择需要仿真的,网络,归类下电源,填上相应的电压。
2022-09-15 10:32:54 538
原创 DDR3 HYPERLYNX SI仿真
HYPERLYNX仿真DDR是非常的方便,有固定的模板可以用,这里就大致的过程和大家分享下。最后,软件会自动出一份报告,如果有NG点,可以再逐个的进行排查。等待几分钟后查看报告。⑥然后一路NEXT,软件会自动识别。知道ODT_MODLE,设置下ODT的模型。②设置完成打开DDR batch-mode wizard。①导入PCB的数据,设置叠层,设置下电源。③本次仿真的是DDR3L,800MT。⑧ 这里注意下仿真一定要仿在die上。⑦一路往下,这里可以勾选,仿真下串扰。④添加控制器和DDR。
2022-09-14 16:59:25 653
原创 sigrity 走线阻抗和耦合查看
利用sigrity进行走线阻抗和耦合的检查,可以快速的定位板子是不是阻抗设计和串扰的问题。①新建工程,选择ERC流程,按照workfolow来操作。 ②第一步load layout file,导入PCB文件,check stackup检查叠层 ③prepare netes,设定电压和选定需要仿真的信号线,电源和地 ④option:set up analysis net groups,选择发送端 ⑤ 选择接收端 ⑥ 区分下电源和地网络。 ⑦到这里把信号进行分组,方便后面仿真。 分组如下 ⑧开始仿真 ⑨至此
2022-07-03 22:57:27 481
原创 sigrity 查看走线的S参数
基板完成后,需要对高速走线进行检查,这里就可以使用sigrity来进行,非常的方便。①打开power SI②这个软件做的非常好的地方是有workflow,一般只要跟着workflow做就可以了。 ③那么先load layout file,然后check stackup(叠层设置重要,一般可以从生产厂商那里获得,还有过孔设置) ④Selet net,选择需要仿真的网络,这里我们准备仿真下DDR3的数据和信号线。 把电源和地归类 添加参考面和电压然后勾选上需要仿真的网络和对应的地和电源。 ⑤Select C
2022-07-03 12:46:31 793
原创 hyperlynx 过孔建模和HFSS建模做对比
hypelynx里可以编辑过孔模型,以为是很简单的建模,今天想看下和HFSS建模精度差多少。①再hyperlynx新增si原理图,这里叠层不做特别设置,就保持默认。 ②原理图上放个过孔(0.3,0.6的孔)看看,可以看到显示阻抗为58耦合ohm ③这里准备再HFSS里建模,这里借助工具 HFSS Via Wizard进行建模,这个工具可以在我的下载资源里下载。 ④结果如下,通过HFSS观察,过孔阻抗大概是在40ohm ⑤结论,HYPERLYNX的简单过孔模型是不太准确的。但是虽然结果有点不同,但是在5G
2022-06-26 14:36:37 858 1
原创 hyperlynx si 前仿真
hyperlynx这个软件非常简单易上手,推进新手可以学习这个软件,今天就原理图仿真进行一个说明。①New Si Schematic ②按下图选中部品,接收端,传输线和发送端,这里把传输线阻抗调整到50ohm和实际设计的值一致。可以用simple模型 ③双击接收端 ,点击选择,hyperlynx这个软件没有理想发送端,必须是要附一个模式才能用。这个和sigrity是不同的。那么我们选择一个模型 这里选择DDR的地址线点击模型选择器,选择一个模式,这里我们就选择第一种,要根据实际器件来进行选择。 ④接下来
2022-06-25 22:36:19 1025
原创 sigrity前仿真,DDR地址线仿真。
开个新坑,之前公司主要是用HYPERLYNX进行仿真,个人肯定是更喜欢用hyperlynx。但是秉着触类旁通,这边也学习下sigrity的仿真。中间试着看了下siwave的仿真,比较复杂先跳过了。①先建立工程,然后如图画下一个发送端,一个传输线,和接收端。②这里TX是理想模型,原来内阻值是50,为了演示用这里修正为17ohm。③双击传输线,点击Tline editor,如下设置把传输线设置成50ohm。 ④设定完了,点击run就可以查看结果了。 ⑤看下结果,明显看到有过冲,这里就以为前面我们修正了TX的内
2022-06-20 22:34:30 2028 10
原创 HFSS 3D LAOUT PCB 裁剪,差分线,过孔仿真和优化
我本身不是做天线设计的,所以HFSS这个软件给我主要还是做PCB级别的高速信号完整性仿真,一般2.5D的仿真软件无法对过孔和跨平面进行仿真。所以要借助三维电磁软件进行。今天就针对PCB进行裁剪。为什么要裁剪?以为如果把整个PCB一起仿真的话,应该要好几个月吧。所以为了加快仿真速度,必须进行裁剪仿真。①candence的PCB可以直接导入。那么先导入brd文件,file-import-candence结果如下②点击cutout,选中要仿真的net和参考平面。这里最好选creat new不然会把原文件覆盖掉。注
2022-06-16 16:19:55 5977 7
原创 HFSS 3D LYAOUT中创建电容,电阻,电感等模型
关于3D LAYOUT的教程实在是太少了,以下是我自己的一些总结,如有错误请指正。像是在高速信号方面,经常用到电容AC耦合,那么如何才能在3D LAYOUT创建电容模型呢。①先放一个VIA的模型 ,在属性里改成PIN ②进入padstack界面,编辑为只有TOP层有正方形的焊盘③好了以后,再复制一个变成2个焊盘,同时选中,右键componets-creat④ Type改成cap,这里如果改成其他type就是其他模型⑤右键model⑥type里面有很多建模的方法,先用最简单的方法RLC network,点击
2022-06-15 16:06:34 8018 7
原创 HFSS 带状线仿真(HFSS和3D LAYOUT的比较)
①仿真下带状线,叠层按如下配置②先用3D LAYOUT建模,如下③为了确保3D LAYOUT的结果正确,我用HFSS重新仿真了一遍,结果如下和3D LAYOUT结果有点不一样,哪里有问题?查看磁场分布图,我觉的HFSS算的应该是正确的。 ④这里我需要继续看下3D LAYOUT里面的设置,最后检查了下2遍的叠层可能有点不一样。我修正了叠层模型,注意看我蓝框标记的地方从0.15修正为了0.115,就是要把走线厚度减掉彩盒SI9000里的模型一致,重新仿真了下基本和HFSS里的结果一致了。......
2022-06-12 00:41:14 6411 1
原创 HFSS 仿真AC耦合
高速信号往往会使用电容进行耦合,可以抵消直流影响。但是电容的焊盘一般比走线宽,会导致阻抗不连续,试着仿真下影响度。①先计算下差分线,如下②在3D LAYOUT创建模型,先设定叠层如下③在top层建立微带线 ④先验证下模型的正确性,扫描下线间距,可以看到再0.2mm间距的时候,接近计算值模型正确 ⑤建立电容焊盘 ,如下0603的焊盘 模型如下,平面没有先出来,L2,L3为平面 TDR如下,明显看到阻抗不连续了。那么就要想办在L2层进行开窗,进行改善⑥L2开窗 如下阻抗有改善。...
2022-06-11 20:26:21 842
原创 HFSS 差分过孔的仿真和优化
差分线往往是会经过过孔的,今天就针对过孔如何仿真进行说明。首先是要建立差分过孔的模型,这里推荐使用官方的插件Via-wizard,可以快速创建,什么的方便。如果自己建模的话,比较复杂这里就不在介绍了。还有一种方法是在3D-LAYOUT里面,用padstack工具建立过孔,这个后续有空再进行说明吧。①差分线叠层如下②Via-wizard设置如下 设置完成点击Generate project.③自动在HFSS建立以下模型,非常漂亮,他的设计是参数化的很方便后续进行扫描。④进行仿真,结果如下,明显可以看到一位过
2022-06-09 23:52:36 3745 1
原创 HFSS 快速建立微带线
①我们传统的方法都是从HFSS里进行建模,这里介绍更加简便的办法。②打开3D LAYOUT,选择Layout-layers,进入叠层设置模式 ③上述是一个6层PWB的叠层结构接下来再layer1画上line,L2,L4,L5画上完整平面。④最终是这个样子的,俯视图 ⑤导入到HFSS,再Analysis建立HFSS setip1,右键点击HFSS setup-export-HFSS modle,导出HFSS模型⑥用HFSS打开,如下就快速建立了微带线模型。当然3D-layout这个工具也可以导入PCB,进行
2022-06-03 21:53:34 3002
原创 HFSS 微带线验证和仿真
①先用si9000计算一条微带线的参数,如下,阻抗为51.46ohm②按照上面的参数,在HFSS里面建模型。 大概分以下几个步骤。①创立BOX,作为介质层,材料选择为FR4②创立box作为line,材料选择copper③创立BOX,作为地层,材料为COPPER④沿着线的两边沿画2个平面,作为波端口,这个波端口尽量打点,因为要包含整个辐射面。⑤最后画一个air box,作为辐射边界。③仿真结果如下,creat prot zo,可以看到仿真的阻抗和si9000计算的结果基本一致。也可以看到其实阻抗是随着频
2022-06-02 14:27:47 6086 3
原创 STM32 CUBE实现printf功能
网上查了下,实现都很复杂。我自己试了下,只需要添加一个函数就可以了。先用 STM32CUBE建立串口工程(这块我就不写了,大家如果有需要我再写).在main.c文件中加入以下///printf functionint fputc(int ch){ HAL_UART_Transmit(&huart2, (uint8_t*)&ch, 1, HAL_MAX_DELAY); return ch;}///printf functionwhile循环就可以用pr
2021-11-02 22:07:25 589
TEK官方出品的介绍探头的不同
2022-06-19
天线设计指南,天线设计原理
2022-06-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人