Trace

学无止境、永不止步
私信 关注
南国之邱
码龄5年

苟全性命于乱世,不求闻达于诸侯

  • 244,271
    被访问量
  • 51
    原创文章
  • 32,107
    作者排名
  • 387
    粉丝数量
  • 于 2015-10-11 加入CSDN
获得成就
  • 获得132次点赞
  • 内容获得22次评论
  • 获得722次收藏
荣誉勋章
兴趣领域
  • #硬件开发
    #硬件工程#嵌入式硬件#硬件架构#arm开发#FPGA开发
TA的专栏
  • linux
    4篇
  • FPGA
    2篇
  • perl
    1篇
  • systemverilog语法
    9篇
  • C++语法
    1篇
  • zynq
    4篇
  • uvm
    8篇
  • opencv
    18篇
  • 技术开发问题集
    2篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

Notepad++连接linux,直接在本地编辑linux中内容

原创
263阅读
0评论
1点赞
发布博客于 2 年前

C和指针代码及答案

关于C和指针书籍中的代码和答案,有需要的可以下载看看。
zip
发布资源于 3 年前

在window系统下安装centos双系统

在window系统下安装centos双系统,详细的安装步骤,保证双系统安装可靠
docx
发布资源于 3 年前

开机显示error:no such partition的解决办法

问题现象:开机显示: error:no such partition Entering rescue mode… grub rescue>问题原因分析:由于安装win7和linux双系统,linux由于出现问题删除了该分区导致无法正常引导win7开机问题解决: 1、利用大白菜制作U盘启动器 2、重启电脑按F12(根据电脑品牌来确定),进入boot选项 3、选择如下图 ...
原创
32686阅读
9评论
11点赞
发布博客于 3 年前

linux系统上vivado调用VCS仿真

linux系统上vivado调用VCS仿真,可以加快仿真速度,更便于观察波形
docx
发布资源于 3 年前

opencv:矩阵归一化—normalize()函数

void normalize(InputArray src,OutputArray dst,double alpha=1,double beta=0,int norm_type=NORM_L2,int dtype=-1,InputArray mask=noArray()) 第一个参数:InputArray类型的src。输入图像,即源图像,填Mat类的对象即可 第二个参数:OutputArray类
原创
1258阅读
0评论
0点赞
发布博客于 4 年前

opencv:log()函数

log()函数的功能是计算每个数组元素绝对值的自然对数 void log(InputArray src,OutputArray dst) 第一个参数:为输入图像 第二个参数:为得到的对数值其原理如下:
原创
7109阅读
0评论
2点赞
发布博客于 4 年前

opencv:计算二维矢量的幅值—magnitude()函数

计算二维矢量的幅值:magnitude()函数 该函数用来计算二维矢量的幅值 void magnitude(InputArray x,InputArray y,OutputArray magnitude) 第一个参数:InputArray类型的x,表示矢量的浮点型X坐标值,也就是实部 第二个参数:InputArray类型的y,表示矢量的浮点型Y坐标值,也就是虚部 第三个参数:OutputA
原创
12823阅读
1评论
1点赞
发布博客于 4 年前

opencv:扩充图像边界—copyMakeBorder()函数

void copyMakeBorder(InputArray src,OutputArray dst,int top,int bottom,int left,int right,int borderType,const Scalar& value-Scalar()) 第一个参数:InputArray类型的src,输入图像,即源图像,填Mat类的对象即可 第二个参数:OutputArray类型的d
原创
2229阅读
0评论
1点赞
发布博客于 4 年前

opencv:返回DFT最优尺寸大小—getOptimalDFTSize()函数

DFT最优尺寸大小:getOptimalDFTSize()函数 getOptimalDFTSize函数返回给定向量尺寸的傅里叶最优尺寸大小。 int getOptimalDFTSize(int vecsize) 此函数的唯一一个参数为int类型的vecsize,向量尺寸,即图片的rows、cols
原创
3114阅读
0评论
0点赞
发布博客于 4 年前

opencv:dft()函数详解

dft函数的作用是对一维或者二维浮点数数组进行正向或反向离散傅里叶变换 void dft(InputArray src,OutputArray dst,int flags =0,int nonzeroRows=0) 第一个参数:InputArray类型的src。输入矩阵,可以为实数或者虚数 第二个参数:OutputArray类型的dst。函数调用后的运算结果存在这里,其尺寸和类型取决于标识符,
原创
8332阅读
2评论
3点赞
发布博客于 4 年前

opencv:离散傅里叶变换

离散傅里叶变换(DFT):指傅里叶变换在时域和频域都呈现离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。傅里叶变换的原理: 简单说:对一张图像使用傅里叶变换就是将它分解成正弦和余弦两部分,也就是将图像从空间域转换到频域 转换理论基础:任何一函数都可以表示成无数个正弦和余弦函数的和的形式。 二维图像的傅里叶变换可以用以下数学公式表达: 其中f是空间域值
原创
584阅读
0评论
0点赞
发布博客于 4 年前

opencv:图像对比度、亮度值调整(理论基础)

一般的图像处理算子都是一个函数,它接受一个或多个输入图像,并产生输出图像。算子的一般形式如下: g(x)=h(f(x))或者g(x)=h(f0(x)……fn(x)) 图像亮度和对比度的调整操作,属于图像处理变换中一种——点操作。 点操作特点:仅仅根据输入像素值(有时加上某些全局信息或参数),来计算相应的输出像素值。这类算子包括亮度和对比度、颜色校正和变换。 两种最常用的点操作
原创
4005阅读
0评论
1点赞
发布博客于 4 年前

opencv:通道合并—merge()函数

函数原型如下:
原创
2309阅读
0评论
0点赞
发布博客于 4 年前

opencv:通道分离—split()函数

split()函数的使用
原创
758阅读
0评论
0点赞
发布博客于 4 年前

opencv:计算数组加权和—addWeighted()函数

其调用方式如下: addWeighted(srcImage2,alphaValue,srcImage3,betaValue,0.0,dstImage);
原创
797阅读
0评论
0点赞
发布博客于 4 年前

opencv:感兴趣区域的操作:ROI

定义ROI区域的两种方法: 1、使用表示矩阵区域的Rect。它指定矩形的左上角坐标(构造函数的前两个参数)和矩形的长宽(构造函数的后两个参数) //定义一个Mat类型并给其设定ROI区域 Mat imageROI; //方法一: imageROI = image(Rect(500,2500,logo.cols,logo.rows));//方法二:指定感兴趣行或者列的范围(Range
原创
446阅读
0评论
0点赞
发布博客于 4 年前

opencv:访问图像中像素的三类方法

见代码分析:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace std;using namespace cv;//全局函数声明void colorReduce (Mat& inputImage, Mat& outputImage, i
原创
332阅读
0评论
0点赞
发布博客于 4 年前

opencv:计时函数

getTickCount()函数返回CPU自某个时间以来走过的时钟周期数 getTickFrequency()函数返回CPU一秒钟所走的时钟周期数示例: double time0 = static_cast(getTickCount()); //记录起始时间 //进行图像处理操作。。。。。。。。。。。。。time0 = ((double)getTickCount() - time0)/getT
原创
958阅读
0评论
1点赞
发布博客于 4 年前

opencv:基本图形的绘制

DrawEllipse()函数的写法 img:表示图像 Point:表示椭圆中心 size:大小位于举行其后面的矩形内 angle:椭圆旋转角度 0,360:表示弧度从0到360度 Scalar:表示图形颜色 thickness:表示线宽 lineType:表示线性DrawFilledCircle()函数用法 DrawLine()函数的写法
原创
450阅读
0评论
0点赞
发布博客于 4 年前

opencv:颜色空间转换、点表示、颜色表示

颜色空间转换:cvtColor()函数 cvtColor()函数是opencv里颜色空间转换函数,可以实现各种颜色之间的转换,也可以转化为灰度图像函数原型: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0) 第一个参数为输入图像 第二个参数为输出图像 第三个参数为颜色空间转换的标识符(见下表) 第四
原创
1042阅读
1评论
0点赞
发布博客于 4 年前

opencv:图像的载入、显示以及创建窗口

图像的载入:imread()函数 opencv官方文档中的原型: Mat imread (const string& filename,int flags=1); (1)第一个参数,const string&类型的filename,填需要载入的图片路径名。 (2)第二个参数,int类型的flags,指定一个加载图像的颜色类型。默认值为1.有时候调用可以忽略,表示载入的
原创
5332阅读
0评论
0点赞
发布博客于 4 年前

opencv:argc和argv的区别与几种main函数的写法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
原创
457阅读
0评论
0点赞
发布博客于 4 年前

UVM的callback的使用(八)

Callback的使用: 作用:提高验证平台的复用性。 UVM中的callback的使用方法: 例子:只涉及到一个类,Mac_transaction。 Task mii_driver::main_phase(); ……. While(1) begin Seq_item_port.get_next_item(req); `uvm_do_callbacks
原创
1750阅读
0评论
2点赞
发布博客于 4 年前

UVM的register model介绍(七)

Register model介绍 问题:期待DUT中的状态寄存器会对我们的激励有一定反应。 解决办法: Task scoreborard::main_phase(uvm_phase phase); ……. Reg_model.STATUS_REGread(status,value,UVM_FRONTDOOR); …… EndtaskUvm_reg_field:是
原创
4343阅读
0评论
1点赞
发布博客于 4 年前

UVM的各种port(六)

TLM:transaction Level Modeling UVM中常见的port: 前6个定义参数就是port中的数据流类型,而后3个定义中参数则表示(request-response)中发起请求时传输的数据类型和返回的数据类型。Export: 前6个定义参数就是port中的数据流类型,而后3个定义中参数则表示(request-response)中发起请求时传输的数据类型和返回
原创
9257阅读
0评论
4点赞
发布博客于 4 年前

UVM的config机制(五)

Config机制 本质是半个全局变量 Config机制是用来传递数据的 比如在case(派生自uvm_test)中build_phase中可如下配置: Uvm_config_db#(int)::set(this,”env.agent.driver”,”pre_num_max”,100); 在driver中的build_phase中设置为: Uvm_config_db#(int)::get
原创
2435阅读
0评论
1点赞
发布博客于 4 年前

UVM的sequence机制(四)

Sequence机制: 在整个UVM验证平台中,sequence负责transaction的产生,并通过sequencer发送给driver。要产生不同的transaction,那么就要在sequence中下功夫。不同的case的差异主要体现在sequence的不同上。复杂的同步:virtual sequence 为了使用virtual sequence,一般需要一个virtua
原创
5665阅读
0评论
0点赞
发布博客于 4 年前

UVM的transaction及filed_automation(三)

Transaction及field_automation Transaction是整个验证平台中流动的信息单元。Sequence产生出transaction,通过sequencer把此transaction转交给driver,driver根据此transaction的信息驱动接口信号。Monitor监测接口数据,并把数据封装成transaction的形式传递给reference model
原创
5057阅读
0评论
1点赞
发布博客于 4 年前

UVM的factory机制(二)

Factory机制: 1、 UVM强烈推荐使用uvm_component_utils或者uvm_object_utils宏来注册。用法: Class A extends uvm_component `uvm_component_utils(A); Endclass 创建一个A的实例如下: A a; a=A::type_id::create(“a”,this); 通过该方式,可以
原创
6872阅读
0评论
4点赞
发布博客于 4 年前

UVM概述及uvm_component和uvm_object(一)

UVM:Universal Verification Methodology(通用验证方法学) UVM:是建立在systemverilog平台上的一个库,提供了一系列的接口,让我们能够更方便的进行验证。验证平台组成: Driver:用来把不同的激励施加给DUT; Monitor:用来检测DUT的输出; Scoreboard:专门用来比较期望值与monitor检测到的DUT输出; Refer
原创
8535阅读
1评论
13点赞
发布博客于 4 年前

zynq的启动方式学习

Zynq-7000AP SOC器件有效利用了片上CPU来帮忙配置。在没有外部JTAG的情况下,处理系统(PS)与可编程逻辑(PL)都必须依靠PS来完成芯片的初始化配置。 ZYNQ的两种启动模式:从BootROM主动启动,从JTAG被动启动。 ZYNQ的启动配置分多级进行的。配置至少需要两步,但通常按如下三个阶段进行: 阶段0:该阶段简称为BootROM,控制着整个芯片的初始化过程。放在Boot
原创
4622阅读
1评论
2点赞
发布博客于 4 年前

zynq的HDMI接口设计

HDMI设计:高清晰度多媒体接口 是一种数字化视频/音频接口技术,最高数据传输速度为5Gbps(目前到10Gbps)。 1、 HDMI传输原理 HDMI系统的架构由信源(source)和信宿(sink)组成。一个设备上可以有多个HDMO接口,但是每个接口都要遵循HDMI信源和信宿的结构。其接口架构图如下: HDMI接口包括3个TMDS数据信道和1个TMDS时钟信道。 TMDS差分传
原创
3065阅读
0评论
1点赞
发布博客于 4 年前

C++语法(二)

二、处理数据 1、整型:就是没有小数部分的数字。不同C++整型使用不同的内存量来存储整数。 整型short、int、long和long long: 使用sizeof运算符返回类型或变量的长度的办法。 2、初始化: 注意:如果不对函数内部定义的变量进行初始化,该变量的值将是不确定的。这意味着该变量的值将是它被创建之前,相应内存单元保存的值。 3、成员函数cout.put():
原创
232阅读
0评论
0点赞
发布博客于 4 年前

zynq的学习(二)

三、 AMBA协议规范 在片上系统(SOC)设计中,高级微控制器总线结构(AMBA)用于片上总线。 AMBA规范(版本4)定义了7个总线/接口: 1) AXI一致性扩展(ACE) 2) AXI一致性扩展简化(ACE-Lite) 3) 高级可扩展接口4(AXI 4) 4) 高级可扩展接口4简化(AXI4-Lite) 5) 高级可扩展接口流(AXI4-Stream) 6)
原创
1209阅读
0评论
2点赞
发布博客于 4 年前

zynq的学习(一)

一、 可编程SOC设计 可编程片上系统(p-soc):包含嵌入式的软核/硬核处理器、存储器和硬件加速器。 硬核处理器:使用硅片上专门的单元实现一个处理器称为硬核处理器。硬核处理器会将一些硬核(如:PowerPC)到FPGA芯片中。 软核处理器:通过使用FPGA片内的设计资源(LUT、BRAM)实现的一个处理器称为软核处理器。软核处理器通过HDL语言或者网表进行描述,必须综合才能使用。1、可编
原创
1732阅读
0评论
0点赞
发布博客于 4 年前

linux常用命令总结

学习linux也有一阵子了,现总结一些常用的linux操作命令,方便大家查找 1、 cd命令 这个命令是最基本的也是最常用的。它用于切换当前目录,可以是绝对路径,也可以是相对路径。例: cd /root/home/quan/ #切换到目录/root/home/quan/下 cd ../ #切换到上一级目录 cd ../quan
原创
379阅读
0评论
1点赞
发布博客于 4 年前

c++语法(一)

一、 进入C++ 首先介绍一个显示消息的简单C++程序,利用cout生成字符输出。源代码中对注释//忽略。C++对大小写敏感。文件的扩展名为cpp 例:myfirst.cpp 其中endl代表换行。 该程序包含以下元素: 1) 注释,由前缀//标识 2) 预处理器编译指令#include。可以通过手册或在线帮助查看函数描述确定使用头文件。 3) 函数头:int main()
原创
344阅读
0评论
0点赞
发布博客于 4 年前

systemverilog语法(十)

二十一、高级接口 虚接口(virtual interface)是一个物理接口的句柄(handle)。 虚接口和对应的通用方法可以把设计和验证平台分隔开来,保证其不受设计改动的影响。当我们对一个设计引脚名字进行改动时,无须改动驱动这个接口的方法,而只需在例化该实物交易处理器的时候,给虚接口绑定对应连接的实体接口即可。以此来实现实物交易处理器的更大重用性。 虚接口的定义:virtual inter
原创
5747阅读
0评论
3点赞
发布博客于 4 年前

systemverilog语法(九)

二十、功能覆盖率 功能覆盖率是用来衡量哪些设计特征已经被测试程序试过的一个指标。 1、 覆盖率的类型: 1) 代码覆盖率:衡量多少代码已经被执行过。一般都通过调用代码覆盖率的命令即可实现。 2) 功能覆盖率:确保设计实现了所有的特性。 3)断言覆盖率:一般检查设计中的关键信号是否正确执行,特别是时序检查时需用到断言。 2、覆盖率一般出现的情况,根据下图进行相应的操作,例: 2、
原创
2939阅读
0评论
2点赞
发布博客于 4 年前

systemverilog语法(八)

十九、面向对象编程的高级技巧 继承:允许从一个现存的类得到一个新的类并共享其变量和子程序。原始类被称为基类或者超类,而新类因为扩展了基类的功能,被称为扩展类。 OOP真正强大的地方在于它可以使你继承现有类。 1、例:事务基类 扩展类: 将类中的子程序定义成虚拟的,这样 它就可以在扩展类中重新定义,这一点适用于所有的任务和函数,除了new函数。 OOP中类的变量称为属性,而任务
原创
1984阅读
0评论
2点赞
发布博客于 4 年前

systemverilog语法(七)

十七、线程 线程的量级比进程小,其代码和存储区可共享,而且所消耗的资源比典型的进程小的多。 1、 线程的使用 1) begin ••••end顺序执行、fork•••join并行执行 2) fork•••join、fork•••join_none、fork••••join_any的区别 注意:1)fork•••join_none块后的那个语句执行早于fork_none内的任何语
原创
9808阅读
0评论
10点赞
发布博客于 4 年前

systemverilog语法(六)

十六、随机化 通过随机化可以通过利用CPU的时间来换取人工检查的时间,提高效率,提供足够的激励。 采用受约束的随机测试法(CRT)产生测试集:使用随机的数据流为DUT产生输入的测试代码。改变伪随机数发生器(PRNG)的种子(seed)。 一般会在测试设计时考虑设计规范的边界处,甚至测试设计规范之外的行为。 1、 简单的随机变量的简单类 例: Randc表示周期随机性,即所有的
原创
19788阅读
1评论
5点赞
发布博客于 4 年前

systemverilog语法(五)

十四、面向对象的基础(oop) 1、 oop术语: 类(class):包含变量和子程序的基本构建块。 对象(object):类的实例 句柄(handle):指向对象的指针。一个句柄可以指向很多对象。 属性(property):存储数据的变量 方法(method):任务或者函数中操作的程序性代码 原型(prototype):程序的头,包括程序名、返回类型和参数列表 2、 声明和使用
原创
7619阅读
0评论
5点赞
发布博客于 4 年前

systemverilog语法(四)

十三:systemverilog断言(SVA) 1、 立即断言:检测设计或者测试模块中信号的正确性 例:检测grant信号的正确性 如果正确产生grant信号,则继续执行,若不符合期望值,则报错。报错信息如下: 2、 定制断言行为:如果想改变默认的消息,可以添加自己的输出信息。 Systemverilog有4个输出消息的函数:info,info,warning,error和
原创
2638阅读
0评论
1点赞
发布博客于 4 年前

systemverilog语法(三)

十二、连接设计和测试平台 验证设计的几个步骤:生成输入激励,捕获输出响应,决定对错和衡量进度 测试平台-设计环境: 1、 使用接口将所有信号捆绑起来 例: 在test中使用接口:其中arbif越短越好 例: 在top中使用接口: 例: 2、 使用modport将接口中的信号分组 例: 3、 使用时钟块控制同步信号的时序 一个接口可以包含多个时钟块,每个时钟块对
原创
3915阅读
0评论
3点赞
发布博客于 4 年前

systemverilog语法(二)

九、过程语句和子程序 1、过程语句:begin•••end、fork•••join。 用于循环的continue:表示跳过本轮循环剩下的语句直接进入下一轮循环。 Break:用于终止并跳出循环。 2、任务task、函数function以及void函数 任务消耗时间而函数不消耗。 如果你想调用函数并且忽略它的返回值,可以使用void进行结果转换。 例: 3、在子程序中去掉begin•
原创
6551阅读
0评论
0点赞
发布博客于 4 年前

systemVerilog语法(一)

一、验证导论: 作为一个验证工程师,最重要的原则是“程序漏洞利大于弊” 设计流程:1)阅读硬件规范,解析其中的自然语言表述。2)使用RTL代码之类的机器语言创建相应的逻辑。 验证流程:1)阅读硬件规范,制定验证计划。2)创建测试来检查RTL代码是否实现所有特性。 单一的BFM测试平台: 多个BFM测试平台:二、数据类型: 1、Logic:任何使用wire或者reg的信号在测试平台是都可
原创
22226阅读
1评论
20点赞
发布博客于 4 年前

linux系统上实现vivado调用VCS仿真教程

在linux系统上实现vivado调用VCS仿真教程 作用:vivado调用VCS仿真可以加快工程的仿真和调试,提高效率。 前期准备:确认安装vivado软件和VCS软件 VCS软件最好安装VCS-MX的版本,可以混合编译Verilog和VHDL语言由于在linux系统中个人用户各种权限被限制,导致很多地方无法正常使用软件之间的协调工作。 为了以防万一,在此以个人用户去实现vivado调用V
原创
6471阅读
0评论
0点赞
发布博客于 4 年前

linux下语法高亮设置

目的:方便查阅代码,有利于debug和设计 步骤:此处以systemverilog为例 1、 在网上下载相关语法高亮的文件。包括以下三个文件(ftdetect、indent、syntax) 2、 把这三个文件放在本地路径下。如图: 若没有.vim文件夹,则在自己本地路径下创建(创建文件夹命令mkdir .vim)。 3、 关闭终端重启终端,则可看见语法高亮。如图:
原创
1441阅读
0评论
0点赞
发布博客于 4 年前

linux系统下的快捷方式设置

##############################Shortcut key configuration################## User specific aliases and functionsalias grep='grep -i --color'alias c='clear'alias p='pwd'alias g='gedit'cdl
原创
409阅读
0评论
0点赞
发布博客于 4 年前

perl正则表达式

正则表达式总结. 任何单字符的通配符,除了
(换行符)* 匹配前面的内容零次或多次\t 匹配制表符+ 匹配前一个条目一次以上\(num) 匹配num个同样的内容| 匹配左边或者右边都可以^ 匹配开头的脱字符(用来表示开头)\d 匹配任意字符集【0-9】\w 匹配任意数字、字母和下划线\w+ 匹配多个数字、字母或者下划线\s 匹配空白(换页、制表、换行、
原创
331阅读
0评论
0点赞
发布博客于 4 年前

makefile命令整理

+ INCDIR +目录+添加包括文件夹-P  pli.tab定义PLI的列表(表)文件+ V2K使用推荐的标准-y定义的Verilog的库-notice显示详尽的诊断信息+ nospecify不对SPECIFY模块进行时序检查和路径延时计算+ notimingcheck不进行时序检查,但是还是把路径延时加入仿真中-location显示完整路径VCS安装这个平台。-
原创
3272阅读
0评论
3点赞
发布博客于 4 年前

IC、FPGA验证学习

----------------------------------入门学习-------------------------一、 学习数电,掌握数电中的一些基本概念(特别是要学会看时序图)二、 查找资料,了解FPGA的一些基本结构和用途以及发展方向三、 学习Verilog语言,掌握一些基本的语法,最好是能够根据时序图或者原理编写代码实现其功能。期间还要学会FPGA的开发流程,ISE或
原创
6592阅读
5评论
25点赞
发布博客于 4 年前