自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 正则表达式(二)

正则表达式

2022-12-22 20:54:50 165 1

原创 正则表达式(一)

正则表达式

2022-12-22 20:46:19 190

原创 建立时间和保持时间

参考链接:3.3 Verilog 建立时间和保持时间 | 菜鸟教程关键词: 建立时间, 保持时间 对于数字系统而言,建立时间(setup time)和保持时间(hold time)是数字电路时序的基础。数字电路系统的稳定性,基本取决于时序是否满足建立时间和保持时间。所以,这里用一整节的篇幅,来详细的说明建立时间和保持时间的概念。 基本概念 建立时间就是时钟触发事件来临之前,数据需要保持稳定的最小时间,以便数据能够被时钟正确的采样。 保持时间就是时钟触发事件来临之后,数据需要保持稳定的最小时间,以便数....

2022-04-10 23:12:41 1899 1

原创 VHDL学习(一)

1.1.标识符 标 识符用来定义常数、 变量 、 信号 、 端口 、 子程序或参数的名字,由字母 母(A~Z,a~z) 、数字(0~9)和下划线 线(_)字符组成。要求 :1)首字符必须是字母2)末字符不能为下 划 线3)不允许出现两个连续的下划线4)不区分大小写5)VHDL定义的保留字(关键字),不能用作标识符标识符字符 最长可以是可以是32个字 符 。注意:注释由两个连续的虚线( -- )引 导1.2关键字关键字是VHDL中具有特别含义的单词 , 只能做为...

2022-03-01 19:38:10 4237

原创 Vivado FIFO IP核设置

fifo是FPGA中使用最为频繁的IP核之一,可以通过软件自动生成,也可以自主编写。下面介绍vivado的fifo生成步骤1、打开ip核,搜索fifo2、创建fifo选择独立的时钟块ram。3、A、选择标准fifo或者frist word full模式,标准模式是数据延时一个时钟周期进入或者输出;frist word full模式时数据直接随时钟同步进入或者输出。1)frist word full模式:数据随着rd_en信号同步输出2)标准模式:rd_en信号到来之后

2021-01-14 10:51:35 2778

转载 verilog-2001 向量部分选择

转载:https://www.cnblogs.com/woshitianma/archive/2013/02/03/2890720.htmlverilog-2001 LRM中有这么一句话:对于a[8*i+:8],this is the so-called "Indexed vector part selects" 。在Verilog-1995中,可以选择向量的任一位输出,也可以选择向量的连续几位输出,不过此时连续几位的始末数值的index需要是常量。vect[msb_expr : lsb_

2021-01-05 10:03:23 458

原创 Time Gen使用-------------绘制时序电路波形

一、软件安装软件介绍: TimeGen可以用于绘画波形,在IC设计,硬件设计领域,数字集成电路使用较多。以FPGA逻辑设计为例,编写源代码时,某个模块的功能构建通常需要FSM实现特定的时序控制、流程控制。而FSM有效的设计方法是,使用“状态图(visio绘制)+时序图(TimeGen绘制)”组合,快速定义模块功能,提高设计效率。另外,很多模块之间的接口信号的时序关系,也可以通过TimeGen绘制。下载安装:链接:https://pan.baidu.com/s/1f...

2020-12-30 19:30:36 4188

原创 windowns批处理命令

https://blog.csdn.net/jerry11112/article/details/77802312https://www.cnblogs.com/baoggg/p/6165465.html

2020-12-03 14:58:11 121

原创 Vivado基于Rom IP核查找表生成cos、sin波形的方法

一、MATLAB生成sin,cos的数据文件构造256点的正余弦表,分别得到 cos和sin的查找表matlab代码: 求sinfid = fopen('sin.txt','a' );str1 = 'MEMORY_INITIALIZATION_RADIX=10;';str2 = 'MEMORY_INITIALIZATION_VECTOR=';fprintf(fid,'\t%s\n \t%s\n', str1,str2);for k=1:256;y(k) =sin(2*pi*k/256

2020-12-02 20:51:59 2830

原创 NC-verilog仿真工具使用(一)

一、介绍 ncverilog是shell版的,nclaunch是以图形界面为基础的,二者调用相同内核;ncverilog的执行有三步模式和单步模式,在nclaunch中对应multiple step和single step。基于shell的ncverilog操作(尤其是单步模式)更适合于大批量操作,ncverilog的波形查看配套软件是simvision,其中包含原理图、波形、信号流等查看方式 在仿真以前,你必须编译和描述它。编译过程将把源文件中的用HDL编写的单...

2020-11-27 11:21:03 16688 2

原创 Linux常用命令指南

1、cd(改变工作目录)cd \root 可进入指定目录cd .. 可进入上一层目录cd - 可进入上一个进入的目录cd ~ 可进入用户的home目录2、ls(显示目录内容)-a 显示指定目录下所有子目录与文件,包括隐藏文件。-l 显示文件的详细信息-h 人性化显示(文件的大小以MB的形式显示)$ ls –al /home 显示/home目录的详细内容。如果目录下的文件太多,用一屏显示不了,可以用ls -l | more分屏显示。3、find...

2020-11-25 15:19:17 453

原创 cadence验证仿真工具IUS和IES

转载:http://www.lujun.org.cn/?p=3714cadence,有两大验证仿真工具。一个是IUS,一个是IES。IUS是cadence以前的仿真工具,功能略弱。代表工具,ncverilog。官方介绍: IUS(incisive unified simulator) Cadence IUS allows to perform behavioral simulation on Verilog and VHDL code. IES是cadence现在的

2020-11-25 15:15:09 3340

原创 Linux入门到精通(七)---------用户管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。实现用户账号的管理,要完成的工作主要有如下几个方面:用户账号的添加、删除与修改。 用户口令的管理。 用户组的管理。一、用户账号的管理1.添加用户账号 在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定...

2020-11-24 15:38:54 143

原创 Linux入门到精通(六)---------流程控制语句

一、test命令Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。数值测试:代码中的 [ ] 执行基本的算数运算数值测试参数 说明-eq 等于则为真-ne 不等于则为真-gt 大于则为真-ge 大于等于则为真-lt 小于则为真-le 小于等于则为真实例num1=100num2=100if test $[num1] -eq $[num2]then echo '两个数相等!'else echo '两个数不

2020-11-23 20:29:29 93

原创 Linux入门到精通(五)---------shell脚本之变量

一、Shell 脚本命令的工作方式有两种:交互式和批处理。 交互式( Interactive):用户每输入一条命令就立即执行。 批处理( Batch):由用户事先编写好一个完整的 Shell 脚本, Shell 会一次性执行脚本中诸多的命令。 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像#!/bin/sh,它同样也可以改为#!/bin/bash。#!告诉系统其后路径...

2020-11-23 16:09:40 93

原创 Linux入门到精通(快捷键)

sudo !!:输入一个命令,并且出现权限不够的时候,您都会感谢有这个命令。apt-get install vlc 除非您以root权限登录,否则将出现权限不够提示。 sudo !!以sudo的形式运行前面的命令。因此,前面的命令现在变成:sudo apt-get install vlcCtrl+ALT+T :打开新的终端Ctrl+c:在命令行下起着终止当前执行程序的作用,Ctrl+d:相当于exit命令,退出当前shellCtrl+s:挂起当前shell...

2020-11-20 11:02:49 138

原创 Linux入门到精通(四)

一、Vim 文本编辑器https://www.runoob.com/linux/linux-vim.html 1.基本上 vi/vim 共分为三种模式,分别是:命令模式(Command mode):控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。输入模式(Insert mode):正常的文本录入。末行命令模式(Last line mode):保存或退出文档,以及设置编辑环境。 2.命令模式:用户刚刚启动 vi/vim,便进入了命令模式。此状态...

2020-11-19 16:17:29 98

原创 Linux入门到精通(三)

一、输入输出重定向输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。 标准输入重定向( STDIN,文件描述符为 0):默认从键盘输入,也可从其他文件或命令中输入。 标准输出重定向( STDOUT,文件描述符为 1):默认输出到屏幕。 错误输出重定向( STDERR,文件描述符为 2):默认输出到屏幕二、管道命令符 按下键盘上的 Shift+\键即可输入管道符,其执...

2020-11-19 15:25:32 148

原创 verilog仿真数据不delay打一拍分析

在IC设计verilog仿真过程中很多人可能会遇到,数据不delay现象。例如:出现:这是由于采样的时钟tx_gen_symbol_clk 和数据信号subframe_start之间存在竞争关系导致的。我们的设计意图是时钟tx_gen_symbol_clk应该采到subframe_start信号的后沿有人可能会说在代码中加入延迟#1来解决,实际上不推荐这样做,还会存在两个#1的信号同样还会存在竞争。要搞清楚产生这种问题的原因首先要了解仿真器对于时序仿真的模型。第4

2020-11-18 19:44:48 3694

原创 Linux入门到精通(二)

一、常用系统工作命令1.echo 命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”。2.date 命令用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式]”。3.reboot 命令用于重启系统,其格式为 reboot;poweroff 命令用于关闭系统,其格式为 poweroff。wget 命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。4.top 命令用于动态地监视进程活动与系统负载等信息,其

2020-11-18 11:16:34 309

原创 Linux入门到精通(一)

开源学习网站:1. 快乐的Linux命令行https://linuxtools-rst.readthedocs.io/zh_CN/latest/index.html#其实我不喜欢一开始就看很厚的那种砖头书,很容易让人丧失兴趣。所以我首先推荐一本小而美的电子书,基本花个几天就能看完,并对 Linux 系统有个初步的了解:Linux Tools Quick Tutorial2. Linux就该这么学这本书我比较推崇,因为它不厚,重点比较突出,而且覆盖了绝大部分重点知识。我在公众号里.

2020-11-18 09:54:26 197

原创 格雷码异步FIFO

格雷码设计异步FIFO,读快写慢,读时钟会出现漏采样的情况,漏采的数据留在FIFO中,导致满信号间断分布。源文件: module dual_clk_fifo #(parameter DATESIZE = 8, parameter ADDRSIZE = 4, parameter ALMOST_GAP = 3)(input [DATESIZE-1:0] wdata,input winc, wclk, wrst_n,input rinc, rclk, rrst_n...

2020-07-29 23:25:28 399

原创 cmos管宽长比,OC, OD门和线与逻辑,传输门,竞争冒险,三态门

一、OD门介绍OC(Open Collector)门,又称集电极开路,OD(Open Drain)漏极开路,通过名称就可以判断,OC门是针对三极管来说的,而OD门是针对MOS管而言的。管子的栅极和输入连接,源极接公共端,漏极悬空(开路)什么也没有接,因此使用时需要接一个适当阻值的电阻到电源,才能使这个管子正常工作,这个电阻就叫上拉电阻。线与逻辑:即两个输出端(包括两个以上)直接互连就可以实现“AND”的逻辑功能。通常CMOS门电路都有反相器作为输出缓冲电路,如上图所示,如果将两个CMOS

2020-07-24 16:17:20 7884

原创 跨时钟域设计(结绳法,脉冲展宽法)

一、结绳法(一)https://www.cnblogs.com/lyc-seu/p/12441366.html#%E6%96%B9%E6%B3%95%E4%BA%94%EF%BC%9Admux%E5%90%8C%E6%AD%A5%E5%99%A8参考链接:https://blog.csdn.net/qq_15026001/article/details/100022905?ops_request_misc=%257B%2522request%255Fid%2522%253A%252215954952

2020-07-24 15:48:18 3894

原创 低功耗设计方法(3)—————RTL级低功耗设计

RTL级低功耗设计    前面介绍了系统级的低功耗设计,换句话说就是在系统级降低功耗可以考虑的方面。系统级的低功耗设计,主要是由系统级设计、具有丰富经验的人员实现,虽然还轮不到我们设计,我们了解一下还是比较好的。我们前端设计人员的重点不在系统级设计上面,而是在RTL级(及综合)上面。下面我们就来介绍RTL编码与逻辑综合的低功耗设计,重点是门控时钟和操作数隔离技术。今天主要是讲解操作数和一些常见的方法;门控时钟由于内容比较多,所以写在后面。  (1)并行与流水的选择  对于某一个功能模块,我们..

2020-07-22 11:24:22 2997

原创 低功耗设计方法(2)——————系统与架构级低功耗设计

1.系统与架构级低功耗设计  系统与架构层次的低功耗设计,可以节省70%以上的功耗。这个层次上的设计往往是由系统和架构设计人员进行的,这些人员往往是有着丰富经验的设计人员。他们制定了低功耗设计方案,由下一级的设计人员(比如做前端设计、做Flow的人员)进行具体实现。下面就来介绍一下在系统架构方面,可以从哪些方面进行低功耗设计,由于我只是只菜鸟,因此这些内容只是我在前人的经验中进行总结学习的笔记,仅供参考。  (1)多电压设计技术(Multi-VDD)①多电压设计技术介绍从前面的功耗方程中..

2020-07-22 11:17:21 2267

原创 低功耗设计方法(1)——————功耗构成和类型

1.功耗的构成——按类型分  低功耗按照类型分类呢,其构成主要有动态功耗、静态功耗、浪涌功耗这三种。1)动态功耗  动态功耗包括:开关功耗或者称为翻转功耗、短路功耗或者称为内部功耗。①开关功耗  在数字CMOS电路中,对负载电容进行充放电时消耗的功耗,比如对于下面的CMOS非门中当Vin = 0时,上面的PMOS导通,下面的NMOS截止;VDD对负载电容Cload进行充电,充电完成后,Vout的电平为高电平。当Vin = 1时,上面的PMOS截止,下面的NMOS导通,负载电容

2020-07-22 10:30:31 2967

原创 加法器的实现(半加器,全加器,行波进位加法器,超前进位加法器,流水线加法器)

一、半加器和全加器二、行波进位加法器三、超前进位加法器(Carry-Lookahead Adder,CLA)https://www.jianshu.com/p/6ce9cad8b467

2020-07-21 16:02:12 1734

原创 乘法器的verilog实现

https://www.cnblogs.com/shengansong/archive/2011/05/23/2054401.html一、对两个二进制数进行相乘运算,运用列式求法我们可以得知,乘法最终就是由加法和移位运算构成的,由此可以用高速度的加法和移位实现乘法操作,具体代码如下:module multi_4bits_pipelining(mul_a, mul_b, clk, rst_n, mul_out); input [3:0] mul_a, mul_b; i.

2020-07-08 19:41:02 1364

原创 IBUF,OBUF,IOBUF原语解析(inout实现,综合出电路结构)

用两种方法 实现inout,综合出来的电路结构一样,所以inout作输入时直接assign就行了。:module inout_def(input clk,input z2,inout dinout2,input z3,inout dinout3,output reg led_r2,output reg led_r3 ); reg dout2 = 0;wire din2;assign dinout2 = z2?1'bz:dout2;assign din2 = di

2020-07-08 11:12:07 22082

原创 除法器的verilog实现

除法器在FPGA里怎么实现呢?当然不是让用“/”和“%”实现。在Verilog HDL语言中虽然有除的运算指令,但是除运算符中的除数必须是2的幂,因此无法实现除数为任意整数的除法,很大程度上限制了它的使用领域。并且多数综合工具对于除运算指令不能综合出令人满意的结果,有些甚至不能给予综合。即使可以综合,也需要比较多的资源。对于这种情况,一般使用相应的算法来实现除法,分为两类,基于减法操作和基于乘法操作的算法。1.1 实现算法基于减法的除法器的算法:对于32的无符号除法,被除数a除以...

2020-07-06 17:22:36 18536

原创 数字集成电路 -- 各种计数器简介(环形计数器,扭环形计数器,线性反馈移位寄存器,行波计数器)

目录数字集成电路 -- 各种计数器简介 1. 环形计数器 2. 扭环形计数器 3. 线性反馈移位寄存器 4. 行波计数器 1. 环形计数器https://wenku.baidu.com/view/73ec140bba1aa8114431d945.htmlN个寄存器构成的环形计数器,状态数:N2. 扭环形计数器https://wenku.baidu.com/view/73ec140bba1aa8114431d945.htmlN个寄存器构成..

2020-07-02 16:38:37 11714

原创 线性反馈移位寄存器(LFSR) ______FPGA产生基于LFSR的伪随机数

FPGA产生基于LFSR的伪随机数1.概念  通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取其中一个数字,该数字称作伪随机数,由于所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。这里的“伪”的含义是,由于该随机数是按照一定算法模拟产生的,其结果是确定的,是可见的,因此并不是真正的随机数。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要,如果随机

2020-07-01 19:52:29 1731

原创 循环冗余校验(CRC,模2运算)

模2运算是一种二进制算法,CRC校验技术中的核心部分,因此,我们在分析CRC算法之前,必须掌握模2运算的规则。与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。而且,模2运算也使用与四则运算相同的运算符,即“+”表示模2加,“-”表示模2减,“×”或“·”表示模2乘,“÷”或“/”表示模2除。与四则运算不同的是模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。这样,两个二进制位相运算时,这两个位的值就能确定运算结果,...

2020-07-01 15:59:05 4684

原创 FIFO最小深度计算

FIFO最小深度计算背景当异步FIFO读写端口的throught-put(吞吐量)不同时,会遇到数据丢失的问题,需要考虑FIFO中的深度问题,即为满足读写流畅不卡顿(数据不丢失)时,FIFO的deepth的最小值。FIFO主要是用于数据的缓存,用在读慢写快的场景下。异步FIFO读写不同频,选用的FIFO要能够在极端的情况下仍然能够保证数据的不溢出。因此,考虑的前提一般都是读慢写快的情景(写时钟大于读时钟),但需要注意的是,这里的写操作是突发传输,而不能使连续操作。倘若写快读慢的场景下,写数据流是连续

2020-06-22 10:13:40 949 1

原创 verilog中异或(^)理解与应用(格雷码,奇偶判断,奇分频)

异或运算:首先异或表示当两个数的二进制表示,进行异或运算时,当前位的两个二进制表示不同则为1相同则为0.该方法被广泛推广用来统计一个数的1的位数!参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。即:  0^0 = 0,  1^0 = 1,  0^1 = 1,  1^1 = 0按位异或的3个特点:(1) 0^0=0,0^1=1 0异或任何数=任何数(2) 1^0=1,1^1=0 1异或任何数-任何数取反(3) 任何数异或自己=把自己置0一、异或^的运用:...

2020-06-18 14:50:24 24646

原创 理解时序逻辑电路和组合逻辑电路

一、组合逻辑电路缺点1)纯组合逻辑电路的缺点在哪?纯组合电路容易产生毛刺,时序逻辑电路对于组合逻辑的毛刺具有容忍度,从而改善电路的时序特性2)纯组合逻辑电路完成不了什么功能?纯组合逻辑只能由当前输入决定当前输出,而不能实现带反馈的逻辑(纯组合电路,奇数个反相器串联闭环振荡器)。带反馈的逻辑,必须要通过寄存器把输出暂存起来,再由时钟沿去控制数据的反馈更新,这样电路才有意义。二、同步时序逻辑电路 1)组合逻辑电路: 在组合逻辑中当各路信号的路径...

2020-06-17 17:19:06 3156

原创 处理多个时钟

跨时钟域信号的传输可以归为两类,分别是:1)控制信号的传输2)数据信号的传输1.控制信号的传输 在设计中,如果将一个异步信号直接送给若干个并行工作的触发器,就会大大增加亚稳态事件发生的概率,因为有可能有多个触发器进入亚稳态。为了避免形成这种情况下的亚稳态,我们常常使用同步触发器的输出信号来取代异步信号。为了减少亚稳态的影响,设计者最常用的方法是使用级同步器,即将两个或多个触发器串联起来组成多的同步电路。 如果同步器的第一级触发器产生亚稳态输出,那么这个亚稳态会在同...

2020-06-16 20:21:49 228

原创 clock skew和clock jitter,时钟短路径问题

Clock skew 和Clock jitter 是影响时钟信号稳定性的主要因素skew通常是时钟相位上的不确定,而jitter是指时钟频率上的不确定(uncertainty)。造成skew和jitter的原因很多。 1)由于时钟源到达不同寄存器所经历路径的驱动和负载的不同,时钟边沿的位置有所差异,因此就带来了skew。 skew=Tclk1-Tclk2 2)而由于晶振本身稳定性,电源以及...

2020-06-16 15:19:18 2221

原创 Perl正则表达式

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。Perl语言的正则表达式功能非常强大,基本上是常用语言中最强大的,很多语言设计正则式支持的时候都参考Perl的正则表达式。Perl的正则表达式的三种形式,分别是匹配,替换和转化:匹配:m//(还可以简写为//,略去m)替换:s///转化:tr///这三种形式一般都和 =~ 或 !~ 搭配使用, =~ 表示相匹配,!

2020-06-10 17:10:27 444

空空如也

空空如也

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

TA关注的人

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