- 博客(129)
- 收藏
- 关注
原创 python中字符串大小写判断和转换函数(upper,lower,capitalize,istitle)
S为一字符串,可以使用python的内建函数对S中的字母大小写做判断和改变。supper,lower和capitalize是转换函数,可以把字符串中的字母做相应的处理。istitle,isupper和islower是判断函数,它们对字符串做相应的判断,返回的True或者False。S.upper() #S中的字母大写 S.lower() #S中的字母小写 S.capitalize() #首字母大写 S.istitle() #单词首字母是否大写的, 且其它为小写 S.isupper() #
2022-03-20 12:51:50 1982
原创 python中判断整数和整型的方法
我们先看一下什么整数和整型。整数(integer):是正整数、零、负整数的集合。整型:计算机中的一个基本的专业术语,指没有小数部分的数据。(来这百度百科)。猛一看整数和整型没有区别,所以网上有一堆使用使用isinstance来判断一个数是否是整数,但是我们在console中输入如下实例时,会发现:>>>isinstance(2,int)True>>>isinstance(2.0,int)False问题来了,如果在运算中一个数是经过浮点运算了,这个数
2022-03-19 21:31:21 5310
原创 python使用rjust把二进制数变换成指定位宽
首先使用bin把数转换成二进制数,然后使用rjust把该数转换为指定位宽,并且可以指定以什么数对齐。使用示例:b.rjust(w,'s'),其中b是一个二进制数,w是指定位宽,s是补的数。b.reverse(),可以把b倒序。...
2022-02-17 17:28:04 1427
原创 python实现double word字符串转double byte字符串
先上代码:import sysfid = open(sys.argv[1],'r')out_fid = open('split.txt','w')for dt in fid.readlines(): print(dt) for n in range(0,8): s_tmp = dt[14-2*n:16-2*n] out_fid.write(s_tmp+"\n")fid.close()out_fid.close()以上代码实现了把64b...
2021-11-26 14:10:15 649
原创 SV宏定义中反斜杠(\),反引号(`),双反引号(``)的作用
反斜杠(\)当一个宏定义有多行时,非末行的结尾要加上反斜杆,告知编译器,该宏还有下一行。在行尾的反斜杠之不能加空格或者字符,否则编译会报错。反引号+双引号(`")该符号的作用时把字符串中的宏都展开。举例说明:`define def_A string1`define def_B string2`define def_C `"def_Adef_B`"那把def_C展开就是string1 string2双反引号(``)它可以帮助编译器区分宏定义的字符,其分隔符标记作用。下.
2021-10-25 17:34:25 6208
原创 makefile常用命令和语法
wildcard:扩展通配符。如果在一目录下面有多个文件,可以使用wildcard把该目录下的文件都展开,并返回一个列表,该列表里面包含该目录下的所有文件。notdir:去掉目标路径函数。src = $(wildcard ./sub/*.v),可以把sub下面的文件都展开。dir =$(notdir$(wildcard ./sub/*.v)),把wildcard展开的文件的路径都去掉,即去掉./sub/。patsubst:替换通配符函数。比如obj = $(patsubst%.v,%
2021-10-22 14:48:57 693
原创 linux中grep的使用
在linux中我们会经常遇到搜索某文本中的关键字,grep命令可以实现该功能,具体使用方法如下:1.在file中搜索AAAgrep ”AAA“ file2.加上-n选项,则可以显示匹配的行号。grep -n ”AAA“ file3.实现递归搜索。如下指令会把当前目录下以及目录下的目录的所有文件都搜索一边。grep -R ”AAA“ ./...
2021-10-20 20:00:59 215
原创 AXI3和AXI4的接口信号区别
axi3协议和axi4协议在信号接口上是有变动的,下面列出了axi4独有的信号。一.写通道1.axi4的AWLEN位宽更大。axi3的AWLEN是4bit,axi4的AWLEN是8bit。因此AXI4可以产生比AXI3更长的写burst。2.axi4的AWLOCK缩减到1bit了。这样可以兼容exclusive传输,但是不支持locked传输。3.axi4增加了AWQOS信号。这个信号支持quality of service。4.axi4增加了AWREGION信号。这支持通过一个物理sl
2021-10-14 17:26:25 4035
原创 python中矩阵乘和矩阵点乘
通过举例子直接看python如何实现矩阵乘和矩阵的点乘。import numpya = numpy.ones([3,3])b = numpy.array([[1 ,2 ,3],[ 4 ,5 ,6],[7 ,8, 9]])c = a*bd = numpy.multiply(a,b)f = numpy.dot(a,b)print 'c is:\n',cprint 'd is:\n',dprint 'f is:\n',f运行经过如下:c is:[[1. 2. 3.][4..
2021-09-17 11:09:52 2366
原创 Verilog保存波形和Verdi打开波形方式
在testbench中常用的保存波形命令如下:initial begin$fsdbDumpfile("tb.fsdb");$fsdbDumpvars();#1000 $finish;end$fsdbDumpvars(depth,instance,options);其中各个选项的意思:depth0:all signals in all scopes.1:all signals in current scope.2:all signals in the curren.
2021-09-06 17:44:48 5329
转载 Verilog中的任务和函数
任务和函数的共同点1.任务和函数必须在模块内定义,其作用范围仅适用于该模块,可以在模块内多次调用。2.任务和函数中可以声明局部变量,如寄存器,时间,整数,实数和事件,但是不能声明线网类型的变量。3.任务和函数中只能使用行为级语句,但是不能包含always和initial块,设计者可以在always和initial块中调用任务和函数。任务和函数的不同点函数能调用另一个函数,但是不能调用任务 任务可以调用另一个任务,也可以调用函数函数总是在仿真时刻0开始 任务可以在非零时刻开始执行函数一定不能包含任
2021-08-17 13:51:18 2758
原创 matlab中图像加噪函数imnoise
在图像处理时,有时需要向图片中添加噪声,使用的函数是imnoise,使用的方法如下:J = imnoise(I,type,paramter)其中I为读取的图片。type是噪声类型,可以选择的噪声类型有gaussian,localvar,poisson,salt &pepper, speckle。parameter是对应不同噪声时的参数。比如选择的是gaussian噪声J = imnoise(I,'gaussian',m,var_gauss)m表示高斯白噪声的均值,var_gau.
2021-08-06 11:17:55 2447
转载 The Ultimate Guide to Static Timing Analysis (STA)
Static Timing Analysisis defined as: a timing verification that ensures whether the various circuit timing are meeting the various timing requirements.One of the most important and challenging aspect in the ASIC/FPGA design flow is timing closure. Timin.
2021-08-06 10:02:18 401
原创 什么时静态时序分析
定义静态时序分析是一种通过检查所有可能的路径是否违例来验证设计的时序性能。STA把设计分解成时序路径,计算这这些路径的传播时延,并且检查设计内部和输入/输出接口的时序约束的违例情况。另外一种时序分析的方法是动态仿真,这是通过给定一组输入激励矢量,然后检查电路的全部行为。和动态仿真相比,静态时序分析由于不用激励电路的逻辑运算,所以更快。由于分析了所有可能的时序路径而不只是检查对输入矢量逻辑敏感的路径,所以STA也更理想。然后,STA仅仅做时序检查,不检查电路的功能。STA怎么工作?当开始执行时
2021-08-04 21:46:29 985
原创 linux中查看某文件的完整路径
我们知道在linux中用pwd可以查看当前文件所在路径,如果向查看某一文件的完整路径可以使用如下命令:realpath file则可以查看到file的完整路径。
2021-08-03 11:46:54 20262
原创 linux中cd某文件夹后自动ls其中的文件
在liunx经常要做目录切换操作,我们进入某文件夹后一般要ls一下,看这个文件夹下由什么文件。如果cd一下,再ls一下,这样比较繁琐。下面介绍如何进入文件夹后,自动ls该文件夹里的内容。如果使用的是csh,那么在.cshrc中添加:alias cd 'cd \!* ; ls'如果使用的是bsh,那么在.bshrc中添加:alias cd="cd $1; ll "或者,cdls(){ cd"${1}"; ls; } aliascd='cdl...
2021-08-02 19:22:53 4130 5
原创 linux统计文件或者文件夹个数
在linux中统计某文件夹下文件的个数方法如下:ls -l | grep "^-" | wc -l统计某文件以及其子目录中文件的个数:ls -lR | grep "^-" | wc -l统计某文件夹下文件夹的个数:ls -l | grep "^d" | wc -l
2021-07-28 15:19:53 2027
原创 Matlab中自带的图片和路径
我们在做Matlab仿真时,有时需要用图片。如果使用自己的图片在展示代码时需要把图片附上,这样会引起麻烦。Matlab中其实有一些自带的图片,如果使用Matlab自带的图片,可以增加代码的可复制性。一般Matlab自带的图片所在目录为C:\Program Files\MATLAB\R2018b\toolbox\images\imdata。具体要看自己Matlab安装的路径,但是其最终toolbox\images\imdata是不变的。...
2021-06-28 19:48:21 10520
原创 Matlab文件和文件夹删除函数
matlab中如果想删除文件,使用函数delete('file')。 如果想删除文件夹,使用函数rmdir('dir_file')。 如果向建一个文件夹,使用函数mkdir('dir_file')
2021-06-22 10:11:44 2112
原创 PCA算法过程
PCA是主成分分析(Principal Components Analysis)的简称。这是一种数据降维技术,用于数据预处理。一般我们获取的原始数据维度都很高,那么我们可以运用PCA算法降低特征维度。这样不仅可以去除无用的噪声,还能减少很大的计算量。...
2021-06-03 20:11:50 5327
原创 matlab中的图像膨胀和腐蚀函数
膨胀和腐蚀是数字形态学里两个基本的操作。简单的说,膨胀是把亮的区域变大。腐蚀就是把暗的区域变大。膨胀函数:B=imdilate(A,zore);A是ru
2021-06-03 19:57:25 8278
原创 matlab中素组填补函数padarray
padarray函数用于素组填补,用于素组的padding。pd_array=padarray(A,a,b,para);a是padding的行数,可以是素组形式;b是padding的数。当设置为‘replicate’时,会以接近padding位置的数padding。para是padding的方式,默认情况下A的上下都padding。可以选择的是post,pre和both。...
2021-05-27 17:56:24 736
原创 matlab中数组复制函数repmat
repmat函数可以实现素组的复制。repmat的使用语法如下:rep_array = repmat(A,n);把A重复n次。rep_array = repmat(A,r1,r2,...);举实例说明,rep_array = repmat(1,2,3)表示把A复制2x3次,输出结果为rep_array=[1 1 1;1 1 1]。。...
2021-05-27 17:15:11 5158
原创 matlab中对比度增强函数imadjust
imadjust使用语法如下:J = imadjust(I,[low_in high_in],[low_out high_out],gamma)该函数的作用是把原始图像中的小于low_in的像素值映射到low_out。把大于high_in的像素值映射到high_out。gamma是其他像素点的映射参数。当gamma=1时,表示线性变换。当gamma>1时,变换函数是一个凸函数。当gamma<1时,变换函数是一个凹函数。imadjust的使用方法,我们直接用一个脚本来示例。I
2021-05-23 15:53:21 6146
原创 Verilog中$random的使用
$random是产生随机数函数,产生的随机数是有符号的。产生有符号随机数dt = $random%10;会产生介于-9到9的数。产生无符号随机数dt = {$random}%10;会产生介于0~9的数。产生min到max的数dt = min + {$random}%(max-min);会产生介于min到max的数。...
2021-05-11 09:02:12 7802 1
原创 matlab中的进制转换
dec2bin把十进制转换为2进制。使用方法为:dec2bin(A);则自动把A转换为2进制数据。dec2bin(A,minDigitals);则把A转换为minDigitals位宽的数据。高位不足的补0;如果minDigitals小于A所需要的位宽,则转换的2进制数据为A所需要的位宽。dec2hex把十进制转换为16进制。使用方法:dec2hex(A);把A转换为16进制。dec2hex(A,minDigitals);使用方法和dec2bin一样。dec2basebas
2021-04-29 18:38:10 6684
原创 matlab中路径操作
在运行matlab时,会遇到不同文件放在不同路径下的情况,这时matlab运行可能报找不到某某文件的错误。这时我们需要把该文件路径添加到matlab收索路径下。addpathaddpath(folder_a,folder_b,...);则可以把folder_a,folder_b,..添加到matlab的搜索路径中。genpathaddpath(genpath(folder_a));genpath会把folder_a下的文件夹都变为文件路径。然后通过addpath把folder_a下的所有文件
2021-04-28 21:19:30 681
原创 matalb中cat的使用
cat可以实现素组和矩阵的拼接功能。使用语法如下:cat(dim,A,B,C,...);dim=1,则A,B,C...按竖直方向拼接。B会接在A的下面;dim=2,则A,B,C...会按水平方向拼接。B会接在A的右边;dim=3,则把A,B,C分别作为三维矩阵的分量。...
2021-04-27 13:50:57 244
原创 matlab中circshift函数的使用
circshift是循环移位函数。可以使用于数组和矩阵元素的循环移位。当A是数组B=circshift(A,p);如果p是正数则实现A从左到右的循环移位。如果p是负数则实现A从右到左的循环移位。当A是矩阵B=circshift(A,[p,0]);如果p是正数则实现A以行为单位,从上到下的循环移位。如果p是负数则实现从下到上的循环移位。B=circshift(A,[0,p]);如果p是正数则实现A以列为单位,从左到右的循环移位。如果p是负数则实现从右到左的循环移位。...
2021-04-26 15:37:57 10850
原创 matlab中imfilter函数的使用
imfilter实现多维图像的N为滤波。使用形式如下:B = imfilter(A,h);B= imfilter(A,h,option,option,...);B是滤波输出结果。A是被滤波的图像,h是滤波器。常见的选项filtering_mode:corr是相关滤波,默认是该值;conv是卷积滤波。boundary_options:'X',使用X填充边界值,其默认值为0;‘replicate’,图像大小通过复制边界的值来扩展;‘symmetric’,通过镜像反射其边界来扩展;‘cir
2021-04-23 17:46:37 5579
原创 matlab中fullfile和dir的使用
fullfile的作用是做文件目录的拼接。如fullfile('D:','A','fafg','*.raw'),则输入了一个字符串‘D:\A\fafg\.*raw’,中间自动插入了\。dir用于显示匹配的文件。具体运行结果如下:
2021-04-23 14:24:52 1674
原创 matlab中uigetfile函数的使用
使用uigetfile函数可以使用鼠标选择文件。[file_name,file_path]=uigetfile('D:\','图像');则file_name返回选中文件的名字,file_path返回选中文件的路径。
2021-04-22 20:12:52 3371
原创 matlab图像保存函数imwrite
imwrite可以使用imwrite函数保存图片,使用方法如下:imwrite(Im,'img.jpg');把Im保存为img.jpg。imwrite(Im,sprintf('img_%d.jpg',i));把保存图片的名字参数化。
2021-04-14 10:08:22 3130
原创 matlab中图像处理相关函数
imresizeimresize用于图像的缩放。b = imresize(I,2);则b为I的2倍。I的长和宽都被放大2倍。b=imresize(I,0.5);则b为I的0.5倍。I的长宽都被缩小2倍。blockprocblockproc用于分开处理图像。b = blcokproc(a,[m n],fn);实现把a以[m n]为单位按照fn处理。...
2021-04-13 17:42:55 136
原创 定点量化和无损量化
硬件电路里面数据位宽都是一定的。在处理数据流是,数据的位宽也是一定的。所以浮点数需要先转变成定点数进行运算。举例说明。12.918,定点量化时对整数部分和小数部分分别量化。(1)整数部分12,最少使用4位量化,4-bit表示范围0~15;(2)小数部分0.918,假设12.918整体使用12位量化,整数已使用4-bit,则小数部分还能使用8-bit量化,能够表示2的8次方共计256个刻度,每个刻度的间隔是1/256 = 0.00390625,这个值也就是量化精度。小数0.918需要多少个刻度
2021-03-19 16:38:38 3586
原创 vcs仿真中一个简单的makefile
VCS(Verilog Compiled Simulator)是常用的RTL仿真工具。下面介绍一个简单的makefile,可以完成RTL编译,仿真和erdi启动。comp: $(VCS) +incdir+catalog\ -f file.frun: $(SIMV)VCS = vcs -full64+nospecify +nottimingcheck -sverilog -timescale=1ns/1ns +lint=TFIPC-L\ +warn=noM
2021-03-19 15:11:34 686
原创 异步FIFO的深度一定要是2的整次幂吗?
在芯片设计中,遇到多比特数据跨时钟操作时,我们通常使用异步FIFO。在使用FIFO之前,我们要计算FIFO的深度,有事后计算出的FIFO深度不一定是2的整数幂,这时候我们需要向上取整到2的整次幂。因为异步FIFO里面读写地址做跨时钟之前把地址做了格雷编码,然后使用格雷编码的地址做跨时钟处理。格雷码的特点是相临(十进制表示)数字只有1bit变化,这样做跨时钟时,可以降低亚稳态的概率。如果FIFO深度不是2的整次幂,那么地址从最大跳变到0时,相应的格雷码地址变化就不止1bit了,这样会增加亚
2021-03-16 10:30:20 5525
原创 异步FIFO控制代码
在芯片设计中,遇到跨时钟操作时,经常用的哦啊异步FIFO,下面整理了异步FIFO控制代码。module async_fifo #( parameter DT_WID =8, parameter ADR_WID =9)(//write portinput wr_rst_n,input wr_clk,input wr_en,input [DT_WID-1:0] w
2021-03-15 16:34:26 306
原创 异步RAM模型
异步ram长用于异步FIFO中。其模型如下:module async_ram #(parameter DT_WID= 8, parameter ADR_WID= 9)(input wr_clk,input wr_en,input [ADR_WID-1:0] wr_addr,input [DT_WID-1:0] wr_dt,input rd_cl
2021-03-15 15:44:40 358
原创 ASIC中的同步复位和异步复位
芯片设计中需要复位操作使电路进入稳定状态。复位操作分为同步复位和异步复位。同步复位同步复位指在时钟上升沿时复位信号才起作用,复位时需要时钟。always @(posedge clk) begin if(!rst_n) dout <= 0; else dout <= din;end如上,当rst_n为0时,只有clk上升沿时,dout才为0,dout被同步复位。同步复位优点:1.电路都是同步复位;2.可以过滤毛刺。同步复位缺点:1.复位
2021-03-15 15:20:56 1052
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人