- 博客(350)
- 资源 (21)
- 收藏
- 关注
原创 正则表达式
() 表示捕获分组,() 会把每个分组里的匹配的值保存起来。例如,使用正则表达式:(GF_HAL|Sensor).*?:exp1):表示不捕获()内的内容,例如(?:\d)(\d+),则\1表示(\d+)。正则表达式懒惰模式(.*?exp2)exp1:查找前面不是 exp2 的 exp1。exp2):查找后面不是 exp2 的 exp1。<=exp2)exp1:查找 exp2 后面的 exp1。=exp2):查找 exp2 前面的 exp1。<=index[)(0),替换为:“\1”
2024-12-24 11:10:07
599
转载 Verilog二维数组一维数组相互转换
转自:https://blog.youkuaiyun.com/qq_35861248/article/details/112990098Verilog二维数组端口使用方法Verilog不支持二维数组端口定义,限制了模块可扩展性。通过generate将二维数组打包为一维数组输出,或将一维数组展开为二维数组即可方便地进行管理将下列宏函数写入头文件并包含在设计中,直接调用宏函数进行打包\展开即可。//二维数组打包为一维数组`define PACK_ARRAY(PK_WIDTH,PK_LEN,PK_SRC,PK_D
2022-02-21 17:30:53
4402
1
转载 vivado中coe文件的生成
转自:https://blog.youkuaiyun.com/qq_34741466/article/details/106155003 参考了https://www.xilinx.com/support/documentation/ip_documentation/blk_mem_gen/v8_3/pg058-blk-mem-gen.pdf文档的第87页开始的内容,并对其进行了适当的翻译。 Specifying Initial Memory Contents 指定内存的初始内容 The Block Mem
2022-02-21 15:13:47
7700
转载 Vivado-FIFO Generator
转自:https://blog.youkuaiyun.com/lzy13785490347/article/details/113404657FIFO Generator IP核的使用 1 概述 (1)最大支持500M (2)支持三种接口:Native interface FIFOs、 AXI Memory Mapped interface FIFOs、 AXI4-Stream interface FIFOs (3)读写数据时,在数据上升沿采样 2 FIFO规则 2.1 empty/full信号 实际上即使
2021-12-13 18:59:24
3793
1
原创 Reindeer-RISCV学习笔记(4)RISCV指令集
文章目录写在前面RISCV体系结构基本内核RV64/RV32-IMAFD(G)扩展性和稳定性压缩指令扩展C特权架构,异常与自陷RISCV指令编码规则指令长度编码约定指令字节序编码规则指令类型立即数RISCV-I寄存器模型整数计算模型控制转移指令访存指令存储器模型FENCECSR指令RISCV-MAFD蜂鸟E203扩展指令接口这一篇文章好好学习一下RISCV指令集。这里主要讲32位整数指令集,之后会提一下特权架构。写在前面有谁可以告诉我为什么ARM对服务器支持不好,而Intel X86对移动端支持不好
2021-11-30 20:45:11
1567
原创 Reindeer-RISCV学习笔记(3)
https://blog.youkuaiyun.com/weixin_43941525/article/details/90408941?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-1.control&spm=1001.2101.3001.4242https://zhuanlan.zhihu.com/p/344736683
2021-11-27 16:53:45
685
转载 newlib中malloc如何获取heap地址
newlib代码:caddr_t_sbrk (int incr){extern char end asm (“end”); /* Defined by the linker. */static char * heap_end;char * prev_heap_end;if (heap_end == NULL)heap_end = & end;prev_heap_end = heap_end;if (heap_end + incr > stack_p
2021-11-26 17:07:12
779
转载 GCC编译时增加宏定义-D标识符,相当于宏定义#define 标识符
转自:https://blog.youkuaiyun.com/u012435142/article/details/83217883GCC编译时增加宏定义-D<标识符>,相当于#define <标识符>,可以在遇到条件编译时执行。例子: 搭配gcc编译命令:gcc -DDEBUG -g -o main.out main.c (注意-D<标识符>应该紧跟gcc后面,-o等指令前面)main.c#include <stdio.h>//如果在gcc编译参数中定义了-D
2021-11-26 15:47:11
2108
转载 如何解决电脑窗口出现在屏幕外的情况
1.首先选中在屏幕外的电脑窗口,简单的方法是直接在任务栏点击该窗口2.另一种方法是:点击 Alt+Tab, 再松开Tab通过←→左右移动选中窗口3.然后点击 Alt+空格键,将出现如下提示,再点击 M4.接下来便可以通过←或者→键移动窗口(如果扩展屏在笔记本右侧,则通过←向左移动)...
2021-11-26 15:16:30
9698
2
转载 CAS原理
转自:https://blog.youkuaiyun.com/nrsc272420199/article/details/1050328731.2 CAS原理分析先看定义(摘自百度百科):compare and swap,解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我
2021-11-24 12:17:17
265
原创 Reindeer-RISCV学习笔记(2)
移植到vivado上,使用zybo开发板。文章目录文件目录coreincludememery寄存器组使用双口ramddr改用axi_hp总线移植到zybo先试一下core添加memerymem_addr地址范围这里说一下如何同时使用SRAM与SDRAMdram_rw_buffer是干嘛用的复位信号和启动信号和阻塞信号文件目录coreincludememery寄存器组使用双口ram双口ram看起来没有问题,可以直接移植。ddr改用axi_hp总线见后文移植到zybo注意需要
2021-11-22 20:16:42
801
转载 Zynq Cache问题的解决方法
转自:https://blog.youkuaiyun.com/Andy_ICer/article/details/111546036 在进行PS-PL之间的DMA传输时,不可避免会遇到Cache问题。今天在这里讲一下Cache的解决方法。其中参考了forums.xilinx.com的处理方法。 首先解释为什么DMA会引入Cache问题(专业名称为Cache一致性问题)。 PS和PL都在独立运行,PS通过DDR控制器来对DDR存储器进行访问,为了加速,常常将一些数据缓存(Cache),而且不是针对
2021-11-17 22:27:53
4142
转载 ZYNQ中的接口
转自:https://blog.youkuaiyun.com/yundanfengqing_nuc/article/details/106055702在ZYNQ芯片内部用硬件实现了AXI总线协议,包括9个物理接口,分别为AXI-GP0-AXI-GP3,AXI-HP0~AXI-HP3,AXI-ACP接口。AXI-ACP接口,是ARM多核架构下定义的一种接口,中文翻译为加速器一致性端口,用来管理DMA之类的不带缓存的AXI外设,PS端是Slave接口。AXI-HP接口,是高性能/带宽的AXI3.0标准的接口,总共有四
2021-11-17 18:49:29
1881
转载 PYNQ_Z2从vivado到SDK的PS到PL点灯以及固化流程
转自:https://blog.youkuaiyun.com/qq_42263796/article/details/101828046 1. vivado的安装 不得不说赛灵思vivado安装比较费时,有时候还装不上。比较好的解决办法是找一台网卡比较好的电脑下载安装包。我这里安装的是web design 2019.1。 安装直接去赛灵思官网下载就行。 2. PYNQ_Z2 board file 使用pynq_z2,我们首先要从官网下载boardfile。 https://
2021-11-17 18:43:05
3147
3
原创 verilog中,数组越界赋值了会怎么样?
reg[15:0] value[7:0];如果在赋值的时候, 使用 value[8] = data;value[15] = data;这样的越界的赋值,会有什么样的后果?来测试一下:`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2021/11/
2021-11-15 14:04:25
1469
1
转载 Verilog 编译指令简介
转自: http://blog.itpub.net/31559985/viewspace-2731447/下面介绍下完整的 8 种编译指令,其中前 4 种使用频率较高。`define, `undef在编译阶段,`define 用于文本替换,类似于 C 语言中的 #define。一旦 `define 指令被编译,其在整个编译过程中都会有效。例如,在一个文件中定义:`define DATA_DW &nbs
2021-11-11 21:55:53
1848
原创 shell脚本中使用root权限
方法一:使用expect参考博客:https://www.cnblogs.com/linuxAndMcu/p/11127787.html#_label1#!/usr/expect/bin/expect -fset timeout=5 #设置5秒超时#下面几行后面不能添加注释,否则会异常#send "exit\r" - exit命令:会退出root账号,成为普通用户spawn su - rootexpect "密码:"send "zlkj\r"send "pwd\r"#send "exi
2021-11-06 15:37:47
17488
1
转载 KEIL中启动文件详解(汇编语言)
原文在此:http://www.cnblogs.com/mddblog/p/4920063.html概述 在嵌入式系统中,启动文件是整个系统非常关键的部分,它会进行一些底层的初始化,构建程序运行必要的环境,比如堆栈初始化,变量初始化等。如果启动文件出现错误,则整个系统就跑不起来,因此研究启动文件非常必要。 在keil中,启动文件由汇编代码编写,一般命名为startup_xxx.s,xxx为支持的某种芯片,比如可以是lpc15xx(NXP的LPC15xx系列)、MK60D10(...
2021-10-30 13:39:20
3016
转载 STM32 进阶教程 11 - RAM中运行程序
转自:https://blog.youkuaiyun.com/zhanglifu3601881/article/details/95040782 前言 上一讲我们讲到stm32可以将代码直接下载到RAM中时行程序调试,同时可以有效避开STM32 Flash 擦写次数有限问题,其实除了仿真调试时将程序设置在RAM中可以解决FLASH擦写次数问题外,如果程序实际运行时能直接在RAM中运行,其代码的运行效率也会有一定的提高,那么怎么实现实际运行时让程序在RAM中运行呢,本节将带领大家来实现这一操作。 示例详解 基于硬
2021-10-30 12:33:18
5103
转载 《编译原理》文法 - 终结符和非终结符
转自:https://blog.youkuaiyun.com/qq_40147863/article/details/88770715 《编译原理》文法 - 终结符和非终结符 终结符 和 非终结符 在编译原理的文法部分是出现得最多的概念,但由于在熟悉编译原理的人看来,这是个
2021-10-26 11:23:40
2616
原创 Reindeer-RISCV学习笔记(1)
riscv启动过程RegisterABIUse by conventionPreserved?x0zerohardwired to 0, ignores writesn/ax1rareturn address for jumpsnox2spstack pointeryesx3gpglobal pointern/ax4tpthread pointern/ax5t0temporary register 0nox6t1temporary register 1nox7t2temporary register 2n
2021-10-22 16:08:47
488
1
转载 zcu102_12_Standalone以太网数据的TCP传输
转自:https://blog.youkuaiyun.com/botao_li/article/details/88222925本文在PS的Standalone程序中使用lwip库通过TCP协议实现网络数据传输。包含TCP Server和TCP Client两种形式本文主要参考lwip的SDK内部说明和工程模板,xapp1026, xapp1306, SDK以及3篇博客:https://www.cnblogs.com/54zorb/p/9609021.htmlhttps://www.cnblogs.com/5
2021-10-12 11:08:53
1173
转载 zynq 轻量级以太网控制器LWIP传输速度优化
转自:https://www.pianshen.com/article/14201449914/在sdk中选择lwip模板,编译调试可轻松连接成功并进行通信,模板中代码完成的任务是client给server发什么,server就会回复什么。但是传输速度非常低下,只有50KB左右,所以需要改进速度,修改lwip BSP中的设置参数可明显改进传输速度,默认BSP参数是:需要修改的参数如下:MEM_SIZE 524288MEMP_NUM_PBUF 1024MEMP_NUM_TCP_SEG 1024
2021-10-12 10:53:10
3490
转载 C语言哈希表用法
转自:https://blog.youkuaiyun.com/nameofcsdn/article/details/107297361哈希表在头文件"uthash.h"中已经有了,只需要简单学习一下用法即可。 1,哈希结构体 #include "uthash.h"typedef struct { int key; int value; UT_hash_handle hh;} Hash;Hash *hash = NULL; 其中UT_hash_handle是头文件"uthash
2021-09-27 11:08:05
1927
转载 PLL中的locked信号解析
转自:http://www.360doc.com/content/13/0509/20/9072830_284220258.shtml 今天对PLL中areset和locked详细查了下资料,发现网上这方面的资料很少,所以自己认真读了下Documentation---ug_altpll.pdf,现在我将我学到的内容总结如下: areset简而言之就是高电平有效,对pll进行复位。 下面我们主要来认识一下locked信号: Locked这个输出到底是干嘛用的呢,pdf
2021-09-23 13:13:44
6309
原创 arduino添加自定义开发板失败
附加开发板的json每次在打开arduino的开发板管理时会自动从网上下载,因此更改里面的内容无效。在arduino的首选项里面设置网络代理,但是不填代理,那么arduion就不会自动从网络更新json文件,因此我们更改json文件里面网址就可以了。这里可以把GitHub网站更改为国内镜像,譬如:hub.fastgit.org将网络设置为代理后打开开发板管理器,这个时候不会更新json,然后搜索开发板后下载安装,如果安装不成功,试试断网之类的操作。安装成功后要把代理设置回来,避免官方开发板无法使用
2021-09-20 16:41:05
1275
转载 ZYNQ地址分配问题
转自:https://blog.youkuaiyun.com/weixin_30481087/article/details/97656924首先给出一篇很好的文章: Zynq构建SoC系统深度学习笔记-05-PL读写DDR3 http://www.eefocus.com/antaur/blog/17-08/423773_0818c.html 这个博主的一系列文章写的很好,本文是在阅读了他的博客后,才下定决心查阅相关文档进一步去研究这个问题 下面给出自己的理解: 一、SoC地址空间分配(查看UG585)
2021-09-19 19:18:34
4849
1
转载 FPGA时序约束理论篇之时序路径与时序模型
转自:https://www.sohu.com/a/364537819_292853时序路径 典型的时序路径有4类,如下图所示,这4类路径可分为片间路径(标记①和标记③)和片内路径(标记②和标记④)。 对于所有的时序路径,我们都要明确其起点和终点,这4类时序路径的起点和终点分别如下表。 时序路径 起点 终点 应用约束 ①输入端口到FPGA内部第一级触发器的路径 ChipA/clk rega/D
2021-09-17 13:37:08
692
原创 建立时间和保持时间
一、概念在实际电路中,必须考虑传输延迟的影响。比如D锁存器,在时钟信号从1变成0时,它把当前输出的值储存在锁存器中。如果输入D稳定,则电路可以稳定工作,如果在时钟跳变时候D的内容也正好发生变化,则可能产生不可预知的结果。所以电路设计者必须保证时钟信号跳变时后,输入信号是稳定的。下图中标示了一些关键时间区间,这些区间和工艺有关。集成电路制造厂家都会提供这个参数。建立时间(Tsu:set up time):是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升
2021-09-16 20:37:19
843
原创 二叉树遍历
文章目录中序遍历递归栈前序遍历递归栈后序遍历递归栈层次遍历中序遍历https://leetcode-cn.com/problems/binary-tree-inorder-traversal/递归这里直接判断左右节点是否是NULL,意味着不需要将节点下移到叶子节点,在下一次递归的时候再判断,个人认为这样会好一点,虽然代码逻辑会复杂一点。递归的对象是子树,那么传递的参数主要就是根节点;递归的思路很简单:如果有左子树,就先递归左子树(因为这一步不需要保存左叶子,因此暂时不考虑);递归完左子树后,
2021-09-10 20:27:41
274
原创 LeetCode 502. IPO
https://leetcode-cn.com/problems/ipo/假设 力扣(LeetCode)即将开始 IPO 。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。给你 n 个项目。对于每个项目 i ,它都有一个纯利润 profits[i] ,和启动该项目需要的最小资本 capital[i] 。最初,你的资本为 w 。当你
2021-09-08 15:26:56
296
转载 堆和栈访问效率
转自:https://blog.youkuaiyun.com/qq_28098067/article/details/53219086栈分配的软件优势:栈分配算法简单,所以高效;堆分配算法相对比较复杂。栈分配的硬件优势:主要两点,cache和内存映射。如果在栈上分配小块内存,因为cache和内存映射已经建立,则效率会非常高,远远优于堆分配。如果在栈上分配大块内存,在不考虑爆栈的情况下,其实两者效率差不到哪去。因为cache命中和内存映射总是在有限的大小进行的,其在栈中分配的大块内存照样cache不
2021-09-08 13:38:35
1859
转载 详解C语言中volatile关键字
转自:https://blog.youkuaiyun.com/lwbeyond/article/details/7265430 volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如 果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举 例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序: short fl
2021-09-04 16:38:02
17025
1
转载 彻底搞懂状态机(一段式、两段式、三段式)
转自:https://blog.youkuaiyun.com/wordwarwordwar/article/details/78509445 实例:FSM实现10010串的检测 状态转移图:初始状态S0,a = 0,z = 0.如果检测到1,跳转到S1。 下一状态S1,a = 1,z = 0.如果检测到0,跳转到S2。 下一状态S2,a = 0,z = 0.如果检测到0,跳转到S3。 下一状态S3,a = 0,z
2021-09-03 15:12:11
7960
1
转载 vivado VIO (virtual input output)虚拟IO的使用
转自:https://blog.youkuaiyun.com/wordwarwordwar/article/details/77150930 一般情况下ILA和VIO都是用在chipscope上使用,VIO可以作为在chipscope时模拟IO。 譬如: 在使用chipscope时需要使用按键出发,但是没有设计按键或者板子不再身边,所以需要模拟按键输入还有其他信号的输出。 参数配置,配置输入探针数量和输出探针数量。分别可以设置0-2
2021-08-31 16:12:17
9762
1
转载 IIR滤波器与FIR滤波器的对比
转自:https://blog.youkuaiyun.com/woshishui_bt/article/details/89010754 1.两种滤波器都是数字滤波器。根据冲激响应的不同,将数字滤波器分为有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器。对于FIR滤波器,冲激响应在有限时间内衰减为零,其输出仅取决于当前和过去的输入信号值。对于IIR滤波器,冲激响应理论上应会无限持续,其输出不仅取决于当前和过去的输入信号值,也取决于过去的信号输出值。 2.FIR:有限脉冲响应滤波器。有限说明其脉冲响应是
2021-08-31 13:03:49
10121
转载 xilinx FPGA IOB约束使用以及注意事项
转自:https://blog.youkuaiyun.com/a874176979/article/details/108484101 xilinx FPGA IOB约束使用以及注意事项 一、什么是IOB约束 在xilinx FPGA中,IOB是位于IO附近的寄存器,是FPGA上距离IO最近的寄存器,同时位置固定。当你输入或者输出采用了IOB约束,那么就可以保证从IO到达寄存器或者从寄存器到达IO之间的走线延迟最短,同时由于IO的位置是固定的,即存在于IO附近,所以每一次编译都不会造成输入或者输出的时序发生改变。
2021-08-31 12:16:32
2741
转载 Verilog中Case语句
转自:https://blog.youkuaiyun.com/CLL_caicai/article/details/104395480 实际问题中常常需要用到多分支选择,使用if语句导致内容繁琐;更明智的做法是使用case语句,case语句是一种多分支选择语句,可以方便的处理多分支选择。本文通过实际例子,讲解case语句的使用,以及case语句的变体casez和casex的使用: 目录 一、case的用法 形式: 功能: 注意: 测试: 二、casez与casex的用法 三、参考文献 一、
2021-08-30 20:20:25
28365
加速度计六面椭球校准matlab.zip
2020-11-21
2001-2019全国大学生电子设计大赛题目合集.zip
2020-04-15
mpvue工程模板wxAPP_template.zip
2020-02-22
myLittleGift.html
2020-02-07
msp430串口计算器
2020-01-13
msp430使用OLED实现数字钟.zip
2020-01-07
tiva资料合集(中文手册、tivaware、keil包)
2020-01-03
Least-Squares Fitting of Two 3-D Point Sets.pdf
2020-01-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人