- 博客(22)
- 收藏
- 关注
原创 FPGA设计约束
将设计的性能目标(主频)传达给工具,引导工具合理分配有限的资源(逻辑、存储、互连),调用时序模型计算每段时序路径的延迟,通过优化布局布线在setup检查和hold检查之间达到平衡,保证时序收敛(即时序裕度slack为正值)。vivado工具可自动生成xdc文件进行输入时钟和输出时钟的约束。IBUFDS(差分缓冲器)用于产生单端时钟,对其输入正端的port(clk_p)约束。I/O约束(引脚分配、电平标准)、布局约束(pblock)、布线约束、配置约束。逻辑互斥和物理互斥在约束效果上与异步时钟组约束等效。
2024-10-22 22:07:20 681
原创 SoC与SIP区别
SoC是设计层次集成多个IP,在同一个工艺制程下在同一硅片上实现,面向高性能低功耗小体积领域。SIP是物理封装层次的集成多个不同工艺制程下的芯片,可快速整合迭代。
2024-10-22 08:08:54 125
原创 FPGA点灯经验
2、开发板提供差分时钟的2个pin,必须在工程中都予以分配,不可只对其中一端分配,否则时钟无法正常工作。可以分配2个pin,一个分配至设计顶层的全局单端时钟,另一个分配至空输入端口浮空处理。3、外接差分时钟不可直接接入MMCM,需要经过BUFG缓冲。1、LED灯起效电平可以在原理图中查看,也可以将其连接至复位,通过复位按键测试。3、时钟:开发板晶振提供的时钟类型(差分or单端)、时钟频率。2、复位:开发板的复位起效电平、硬按键位置。5、管脚分配:复位、时钟、LED。4、LED:LED灯起效电平。
2024-10-12 15:49:54 104
原创 FAT-32文件系统下拆分大于4GB文件
由于FAT-32文件系统格式对每个文件有4GB上限的限制,故需要将大于4GB的文件分割成小文件放入U盘。(part_为分割小文件的前缀)
2024-09-04 19:57:14 167
原创 数字IC笔记
1、RTL描述中需要区分“变量”和“信号”,对于信号的描述可综合出实体(reg对应寄存器、wire对应线网),而变量只是辅助描述的手段,是编程语言的概念。2、在实际电路中,复位信号对于触发器是电平驱动而非边沿驱动的,即使无下降沿,只要复位信号为0即可复位触发器。3、阻塞赋值仅在不可综合的Verilog描述(initial过程块)中体现阻塞,在可综合的Verilog描述(always过程块)不体现阻塞。4、为避免综合出锁存器,组合逻辑中的if和else if后必须添加else条件。时序逻辑中则不需要。
2024-05-25 22:32:00 290
原创 PLL基本原理
PLL主要由晶振、相位比较器(Phase Detector)、电压控制振荡器组成(VCO)。晶振提供稳定的参考时钟,相位比较器将比较输入的参考时钟与VCO输出信号的相位差。当相位差不等于 2nπ时,相位比较器输出非零电压,经过滤波器处理后,作为控制电压输入VCO。VCO根据此控制电压调节其输出频率,最终输出倍频后的时钟信号。调节过程中,随着VCO输出信号频率的提高,相位比较器输出至VCO的控制电压越来越大,从而控制VCO的输出频率提升至设定的倍频值并保持稳定,最终实现时钟倍频。
2024-05-16 13:17:45 460
翻译 ASIC设计流程
6、执行IP的综合,工具的输入为:库文件(综合目标,带有标准单元库的可用的功能和时序信息,以及连线基于连接的扇出长度的线负载模型)、RTL、设计约束文件,供综合工具执行RTL的综合、映射、优化,以满足设计约束的需求。12h、执行LVS(layout vs Spice)检查,将布线网表转换为spice(SPICE-R),转换综合网表(SPICE-S),比较确认二者匹配。12、布局布线后检查是否设计满足需求(功能、时序、面积、功耗、可测性、DRC、LVS、ERC、ESD、SI、IR-Drop)。
2024-03-31 09:48:44 235 1
原创 Verilog描述建议
6、注意if-else和case不能传播不定态,必要时使用assign语句代替。7、精简assign语句中的组合逻辑描述3、1、命信号命名有区分度,避免相似的命名。5、减少if语句中的else-if分支。9、避免使用计数器等于常数作为条件。10、精简代码,避免bug的嵌套。2、命名使用英文,代替汉语拼音。8、确保计数器清零,不产生上溢。4、精简if语句中的条件描述。3、状态机命名具备明确含义。
2024-03-25 07:02:43 138 1
原创 AXI4协议4K边界
在AXI4协议中,memory空间划分为4KB的块,一个burst transfer不能跨越4K地址边界,即访存操作的起始地址和终止地址必须处于相邻的两个4K边界对齐地址点(即0x0000_0000、0x0000_1000、0x0000_2000等)区间内。cache line作为缓存(cache)和主存(main memory)之间数据传输的最小单位,其大小通常为4KB及其倍数,且操作系统通常定义一个page为4KB,故4K地址边界对齐可简化缓存一致性设计,便于内存管理。
2024-03-19 22:39:06 563 1
原创 存储器分类
由于nand flash容量更大,故常用于存放OS kernal和file system,并且用于固态硬盘(SSD)、SD卡、U盘(USB Flash Drive)等。对比SRAM,其速度较慢,但成本低、面积小,故可实现大集成度。狭义的寄存器通常由多个触发器(Flip-Flops)或多个锁存器(Latch)组合而成,读写速度最快,但成本高且面积大(例如每个D触发器由12个晶体管组成)。不同于狭义EEPROM以字节为单位擦除,flash以块为单位擦除,实现了更高的数据密度,从而具备更大的容量。
2024-02-23 10:40:18 444 1
原创 ProtoCompiler使用经验(7):Incompatible IO
Vivado2018.1中,在不对LVCMOS12标准IO的驱动能力进行约束时,默认为12mA。但LVCMOS12标准的HP I/O Bank并不支持12mA的驱动能力。ProtoCompiler在调用Vivado2018.1进行place时,将ddr4的c0_ddr4_reset_n端口映射到bank63(HP I/O Bank),且默认约束其电压标准为LVCMOS12(默认驱动能力为12mA),故报出此ERROR。在Vivado中可以使用上图中的约束语句修改其驱动能力。
2024-01-29 10:13:35 1461
原创 ASIC、FPGA、SoC、SoPC、SoC FPGA、MCU区别与联系
FPGA属于一种半定制IC,通过编程配置逻辑资源(CLB、IOB、switch等),以实现不同的功能。由于其可擦写带来的配置灵活性,可用于ASIC设计的原型验证和软件开发,以及在无需批量生产且对性能要求不高的领域作为ASIC替代品。FPGA实现的SoC。即将SoC的软核设计经过综合及实现后,通过写入bitstream完成配置的FPGA。此FPGA可灵活编程,但时钟主频不及ASIC实现的SoC。劣势为开发周期长、成本高。集成处理器、协处理器、存储器(RAM、ROM)、外设控制器等组件,内部通过片上总线通信。
2024-01-16 21:38:16 1041 1
原创 Vivado综合选项:门控时钟转换
Tools -> Settings,在Project Settings下点击Synthesis,将gated_clock_conversion选项设置为on。设置综合阶段的门控时钟转换选项可避免由于门控时钟引发的时序分析hold违反。
2024-01-15 19:28:17 796 1
原创 GVIM tips
放弃修改,重新载入上一次保存(:w)的文档进行编辑。:100,200d:删除第100行至第200行。S:(或cc)删除光标所在行并进入插入模式。:%s=*$==:将所有行尾多余的空格删除。O:在光标所在行上一行开新行插入文字。:history:显示历史输入的命令。/\<abc\>:查找完整单词abc。d^:删除当前行的光标到行首部分。d$:删除当前行的光标到行尾部分。^:光标移至行首第一个非空字符。viw:选中当前光标所在的单词。yiw:复制当前光标所在的单词。:g/^$/d:将所有空行删除。
2024-01-14 16:53:17 370 1
原创 VCS仿真tips
2、若不同库目录中存在内容不同但同名的module,VCS仅引用第一个-y选项指定的库目录中源文件内的module。为避免module引用错误,建议修改module及源文件名称以区别,并在实例化时引用修改名称后的module。指定库目录中需要VCS搜索的库文件的扩展名。1、VCS在此路径下搜索的是与module同名的文件,若module与文件不同名,则报出找不到module定义的error。指定Verilog设计源文件的库目录,VCS在此路径下搜索未在-v选项指定的源文件中定义的module。
2024-01-12 08:39:55 456 1
原创 ProtoCompiler使用经验(6):lock
ProtoCompiler运行过程中,若手动中断运行,再次运行前需要删除上一次不完整运行的全部状态,否则再次运行会报出状态锁定(lock)的ERROR。
2024-01-08 16:39:16 444 1
原创 ProtoCompiler使用经验(5):archive
使用Vivado的archive(存档)功能时,需要注意,若使用ProtoCompiler版本为2018.09其调用的Vivado版本为2018.1,建议使用Vivado2018.1存档,避免使用2020.2及以上版本。
2024-01-03 09:45:48 436 1
原创 ProtoCompiler使用经验(4):IOBUF
对于设计顶层的inout类型端口,描述三态门使用IOBUF实例,避免使用可综合组合逻辑。否则易推译出BUFT,而XCVU440不支持BUFT,导致报出ERROR。
2023-12-26 14:38:04 499 1
原创 ProtoCompiler使用经验(3):OOC
对于ProtoCompiler而言必须选择OOC方式生成IP,在编译阶段调用*_stub.v(Black Box文件,仅包含port信息),在实现阶段读取.xci文件,从而获取网表。OOC:生成.dcp(design checkpoint)文件作为综合结果,.dcp文件中的网表与RTL设计综合生成的网表一起进入实现阶段,不再与整体设计一起重新综合。Global:在每一次设计迭代时,IP与整体RTL设计一起重新综合。
2023-12-22 15:42:44 657
原创 ProtoCompiler使用经验(2):xci
1.严格保证ProtoCompiler内部调用的Vivado与生成.xci的Vivado版本一致。若使用2020.2生成.xci,导入调用2018.1的ProtoCompiler,则报出无法读取.xci的Error。2.在读取.xci的文件列表中,避免使用主tcl脚本中定义的变量作为路径。因为ProtoCompiler并不能将主tcl脚本中的变量写入供Vivado执行的脚本中,故会报出找不到路径的错误。
2023-12-05 21:33:19 462
原创 ProtoCompiler使用经验(1):fdc
原因在于ProtoCompiler尽管调用Vivado进行实现,但其时序约束文件.fdc并不识别全部的Vivado约束语句,需要按照fdc规定的语法指定约束条件。若将此语句直接添加至时序约束文件.fdc中,则ProtoCompiler报出不能识别“set_property”的Error。【注:XXX为clock object】
2023-12-05 21:13:42 639
原创 时序分析:异步复位的removal time和recovery time
在数字IC设计阶段的时序分析中,对于异步复位寄存器,置位信号和复位信号需与时钟满足recovery time及removal time条件,才能有效完成置位和复位操作,防止亚稳态。recovery time(恢复时间):置位(撤销复位)时,在时钟有效沿来临前,为保证寄存器能有效恢复到置位状态,置位电平必须保持稳定的最小时间间隔。removal time(清除时间):复位时,在时钟有效沿来临后,为保证寄存器能有效恢复到复位状态,复位电平必须保持稳定的最小时间间隔。如图所示,以时钟上升沿
2022-02-11 19:14:53 5252 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人