自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 从Keil迁移到SDCC

当前,在单片机开发领域,Keil是广泛被采用的开发工具。然而,其编辑器功能相较于现代的VScode显得相当陈旧和不足。过去,我也曾试验过使用platformIO,其核心理念是对SDCC和stcgal进行封装,从而提供一个更加集成的开发环境。现在,我们将基于SDCC和stcgal来搭建一个全新的单片机开发环境。我们将现有代码从Keil迁移到SDCC,确保原有的Keil代码能够在新环境中顺畅运行。

2023-12-29 11:03:23 1174

原创 perl使用find函数踩坑

写了一个脚本可以同时检查多个仿真log文件,并生成html表格。按照文件修改时间从新到旧排序。然后一直无法使用stath函数获取ctime。find函数会改变程序执行的当前目录函数是在$dir目录下运行的。

2023-12-26 17:10:29 1538

原创 Linux 配置RealVNC远程访问

官网现在是收费的,官方提供的免费试用,但是只能通过互联网云端进行连接,无法本地连接。7.XX版本之后无法使用序列号进行破解,推荐使用6.XX版本。

2023-11-19 06:09:22 2361 3

原创 在systemverilog中使用断言(assert)进行复位检查

考虑以下场景:复位触发后,需要检查端口信号或内部关键信号是否被正确复位。复位的验证不应该依赖于某个特定的case, 应该贯穿验证的整个阶段。的检测,用于判断复位触发时,端口信号是否是复位值。推荐使用断言进行复位检查。

2023-11-14 19:28:47 326 2

原创 vcs\verdi三步编译VIVADO库

使用vcs仿真带vivado的IP的设计的时候,经常需要联合编译,vivado的库有的是VHDL文件,这时又需要vcs进行三步编译。VCS三步编译是将两步编译的第一步,拆分成了Analysis+Elaboration,这样做的好处是可以编译VHDL文件。若使用一条命令编译源文件和uvm环境,则uvm环境会默认在最后开始编译,这就导致前面编译源文件的时候会报错,所以。我们刚才使用vivaod生成了一个synopsys_sim.setup文件,该文件主要指定了Xilinx的库。文件的时候,才会使用三步编译。

2023-08-28 18:00:50 1388 4

原创 VCS编译参数说明

VCS常见的编译参数说明

2023-08-28 16:34:28 1252

原创 Generate for生成 一系列有细微不同的模块

遇到一个关于Generate 的问题。

2022-11-14 12:30:04 190 1

原创 数字二倍频电路

以异或门为例进行分析。t0时刻:Q=0;此时clk_o = clk ^ Q = clk ^ 0 = clk;t1时刻:clk 时钟上升沿来临,传递到寄存器时钟端。clk_o 拉高,寄存器状态更新。Q=1;t2时刻:Q=1的状态传递到寄存器的时钟端。此时clk 仍然处于高电平状态。clk_o开始拉低。触发器状态不更新。所以clk_o的高电平持续时间就是t2-t1。t3时刻:clk 下降沿来临,此时clk_o = clk ^ Q = clk ^ 1 = ~clk;......

2022-08-29 17:26:56 2281 1

原创 DCM和PLL和MMCM的差别

前言之前移植接触的都是Xilinx7系列的板子。项目需要使用Xilinx5系列的板子,两者的时钟单元不一样。在网上搜集了一些资料,总结一下DCM\PLL\MMCM之间的差别。环境无正文​ 在 Xilinx FPGA 中,时钟管理器称为时钟管理,简称 CMT。我们使用的DCM /PLL/MMCM都包含在CMT中。​ DCM是旧技术,在Spartan-3和Virtex-4系列中使用。Spartan-6和 Virtex-5系列同时使用PLL和DCM。在Virtex-6系列中开始使用MMCM,且V

2022-05-14 11:29:06 1067

原创 ISE 14.7 无法启动:segmentation fault (code dump)

解决ISE启动出现segment fault的问题

2022-05-01 10:03:34 516

原创 镁光nor flash 开源控制器调教记录

前言​ 懒癌发作,项目早就结束了。但是一直不想写。😄先占个坑,以后再写完整。​ 项目需要用到一个镁光的flash,需要一个开源的qspi-flash控制器,连接到CPU上作为CPU外设。感谢开源qspi-flash 控制器已经提供了比较完善的架构。我需要做的主要有:根据flash型号的差别迁移flash 的指令根据项目需要将控制器的ahb接口转接到apb接口迁移原项目中使用的IP,看不到源代码的IP都要被替换替换项目中的存储器ram,与公司项目整体保持一致搭建仿真环境,上板验证。

2022-04-09 22:20:38 1318

原创 开源APB2WisnBone UART IP 的使用

前言项目需要使用一个较为完成的UART IP。OpenCores有不少开源的UART IP。但是大多是WishBone总线,项目接口时APB,需要进行一个转换。而且项目使用的IP需要有源码。Github 上WishboneAXI和wb2axip这两个项目都可以进行转换。其中WishboneAXI是以Xilinx IP的形式提供的,使用非常方便。但是我在使用WishboneAxI的时候Vivado仿真失败。最后还是决定自己写一个APB 到 WishBone的总线转换。学习工程中的一大困扰就是网上的资

2022-03-03 09:40:03 3082

原创 ARM 外部中断的过程

前言ARM的中断和51单片机的中断有不少不同的地方,这里梳理一下ARM外部中断的实现过程。环境ARM单片机:公司设计的EM537单片机ARM指令集型号:V7-A正文一、ARM中断类型首先参考《ARM体系结构与编程》第九章异常中断处理章节中的内容。ARM中断可以分为以下几种类型:ARM中断向量的地址和优先级表格ARM共有8种类型的中断,中断的数目可以扩展。EM537中通过TZIC模块,将IRQ中断数目扩展至128。FIQ的中断,优先级高,延迟低。常用于DMA类型的中断。我

2022-02-23 17:53:38 1391

原创 51学习(2):vscode+ Embedded IDE开发环境搭建

前言platformIO虽然可以用于编译8051,但是修改头文件包含路径,以及编译器选项都较为麻烦。Embedded IDE界面类似Visual Studio,设置较为方便。环境单片机:普中-STC89C516RD+正文一,安装Embedded IDE和SDCC编译器platformIO使用的也是SDCC编译器,但是Embedded IDE需要自己下载安装SDCC编译器下载安装SDCC编译器:sdcc官方网页sdcc-4.1.0-x64-setup.exeEmbedded ID

2022-02-23 17:52:37 4518

原创 51学习(1):vscode+platformIO 开发环境搭建

前言目前单片机开发大都使用Keil。但是Keil的编辑器很落后,和VScode比差远了。今天用vscode+platformIO插件搭建单片机开发环境。环境单片机:普中-STC89C516RD+正文一,安装vscode 和 platform点击链接下载安装vscode: vscode官方下载地址vscode 搜索安装 PlatformIO IDE安装时间较长二,platform 使用可以设置板子型号stc89c52。板子的型号并不重要,因为型号决定板子支持的下载方式,支

2022-02-23 17:50:58 7566 8

原创 嵌入式学习

1 安装 qemu1.1 命令wget https://download.qemu.org/qemu-6.2.0.tar.xztar xvJf qemu-6.2.0.tar.xzcd qemu-6.2.0./configure --target-list=arm-softmmu,arm-linux-user --enable-debugmake1.2 报错与修复1.2.1 ERROR: Cannot find Ninjasudo apt-get install ninja-build

2022-02-23 17:49:12 1377

原创 解决嵌入式arm编译除法,报error:__umodsi3和__udivsi3的问题

这里写自定义目录标题前言问题1:不支持除法问题2:bl跳转问题问题3:no memory region specified for参考文献前言SOC原型验证,编译程序的时候遇到不支持除法的问题。网上没有一个方便的解决方法,我利用sed替换实现了一个好一点的方法。文章以遇到问题的顺序来记录。问题1:不支持除法这个问题的乐音还是比较简单的,网上讲的很清楚,arm是精简指令集,本身不支持除法需要调用第三方的库软件实现。这里调用lgcc的库,需要再连接的时候加上,如下图所示。这里-l 后面加库名gcc

2021-12-26 16:43:24 1311

原创 FRP反向代理 连接内网服务器上的jupyter

前言服务器只能校内登录,现在都在校外实习挺麻烦的。利用FRP可以反向代理,然后利用SSH端口映射。不用新开端口就可以直接访问jupyter notebook。文章目录前言FRP反向代理公网中继服务器端内网服务器端外网客户端参考文献FRP反向代理公网中继服务器端编辑配置文件 frps.ini[common]bind_port = 7000运行命令nohup ./frps -c frps.ini &内网服务器端编辑配置文件frpc.ini[common]server_add

2021-12-15 21:44:33 947

原创 模块深层调用-避免端口层层穿出的两种方法

前言有的时候,比如设计中调用了DDR。DDR控制器的芯片相关的端口需要连接到管脚上,如果一路穿出来的话太麻烦。然后就想能不能不用引出利用IP约束直接在内部绑定到管脚。约束文件顺序首先IP约束的优先级高于用户约束,IP约束里面的设置可以覆盖用户里面的设置。...

2021-12-08 22:19:08 543

原创 xilinx的DDR IP中的自刷新功能

前言SDRAM不刷新数据会丢失,所以看到DDR IP里面的自刷新设置默认没有打开,我很疑惑。结论:例化后的默认配置即可,不用担心刷新问题。解释图中的自刷新功能指的是打开DDR芯片的自刷新功能。而不是DDR controler的刷新功能。DDR CONTROLER的自刷新功能是默认打开的。即不需要外界的刷新命令。即可使用。如果想要手动控制DDR的刷新需要打开下图中的选项。xilinx的建议大概意思是说,让DDR控制器自己控制刷新可能会造成4%的性能损失。但是除非你真的非常有把握否则不建议打

2021-12-08 13:01:51 2850 1

原创 vivado tcl 全流程

前言之前都在用gui,后来项目要求用tcl脚本。网上的教程大都不涉及IP和block design。所以把自己的脚本放上来。脚本适用于已经有GUI的工程,然后想转TCL模式。文章目录前言从现有工程得到IP和BlockDesign的TCL脚本TCL 全流程代码简要的说明代码参考文档从现有工程得到IP和BlockDesign的TCL脚本打开现有工程。生成IP tclwrite_ip_tcl -force [get_ips] create_ip.tcl生成BlockDesign tcl

2021-12-07 16:51:32 1368

原创 使用JTAG更新BRAM的方法

引言做SOC原型验证的时候,里面块ROM。存储上电后需要加载的信息。如果能够使用JTAG可以通过电脑动态的更新BRAM,就可以避免重复生成位流。我在xilinx 的IP里发现了一种实现方式。也是第一次使用记录一下。文章目录引言block design设计的其他模块JTAG_AXI IP 的使用命令命令相关命令的感想block design因为设计AXI总线,所以用block design 例化IP ,可以省去连线的麻烦。JTAG TO AXI MASTER 模块直接默认。 AXI BRAM CON

2021-12-02 20:40:00 852 1

原创 ila采集时钟波形,引发的关于时序的思考

声明本人经验之谈,仅供参考。文章目录声明引言ila的时钟频率dubug_hub时钟频率和ila_core时钟频率的关系dubug_hub的时钟频率和JTAG时钟频率的关系ila时钟频率和被采样时钟频率时钟路径时序报告分析引言一般来说,我们是不用ila去查看时钟波形的。这会带来时序上的困难。但是在Debug时,我们可能需要判断FPGA内部的某个时钟信号有没有正常工作。在不增加输出管脚的情况下,还是用ila比较方便。这里分析一下,ila抓取时钟波形需要注意的地方和对时序路径的一些分析。ila的时钟频

2021-12-01 10:21:39 9376 1

原创 vivado 对高阻z和不定态x信号的处理

引言最近在做关于FPGA原型验证,不清楚代码中的高阻z和不定态x会被映射成什么样的电路。会不会导致前仿真和综合后仿真的结果不一致。所以自己做了个验证。1,高阻z代码先附上用来验证的源代码和仿真代码。代码结构比较简单,en_zen\_zen_z信号就是我们要验证的信号。源代码module top(input clk,input rst_n,input en,output wire[2:0] led,output wire[1:0] cnt );chip rita( .cl

2021-11-26 15:26:11 10979 2

原创 vivado时序违例相关

标题相关文章Vivado时序违约小结Hold Time违例,该如何解决一种在FPGA设计中解决holdtime违例的方式时序路径分析UG906第五章

2021-11-09 14:08:13 1053

原创 门控时钟和时钟MUX

门控时钟和时钟MUX1.门控时钟最近做ASIC的FPGA原型验证,遇到了门控时钟的问题。在这里记录下来。门控时钟在ASIC设计中经常使用。门控时钟可以通过时钟使能信号关闭模块,进而降低功耗。但是在FPGA里面门控时钟会占用较多的时钟资源,按照我的理解FPGA使用组合逻辑生成的门控时钟驱动能力弱,会导致延时较大,时序违例。一般的思路是将门控时钟替换为使能时钟。就是将时钟使能信号改为寄存器使能信号。Vivado软件比较智能,可以通过综合策略中设置“gated_ clock_conversion”为a

2021-08-24 00:25:27 3709 1

原创 解决Modelsim软件安装遇到的几个问题

解决Modelsim软件安装遇到的几个问题问题列表安装信息问题一:无限弹窗问题二:无法新建library或project问题三:仿真错误,提示不能正确载入设计问题四:无法查看仿真波形问题列表因为一些事情博主我需要安装Modelsim 软件,按照网上的教程安装好后仍然遇到了一些问题,这里记录下来。安装信息电脑:荣耀magicbook 2019 锐龙版软件:Modelsim10.7版本问题...

2020-03-29 22:06:47 5074 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除