自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 异步FIFO设计 verilog代码

由于平台已经有很多介绍关于异步FIFO的文章,在这里我就不说了,我直接上spec和模块代码已经测试代码。感谢老师提供的课程,课程链接异步电路对于异步FIFO,其结构图如下其中,ASYN_FIFO_CTRL模块内部模块如下对于我的代码,在ASYN_FIFO_CTRL模块中,我将计数器转成格雷码同步到别的时钟后没有再转到二进制,格雷码也可以比较输出空满信号,此计数器的位宽比地址位宽多一位,很多文章讲过,懂的都懂!对于空信号,就是判断读写计数器是否一样,而满信号再格雷码下则是,assign ful

2021-04-07 21:05:04 502

原创 IIC总线协议Verilog实现

IIC协议是一种数据双向、二线制总线标准的总线协议。多用于主机(master)从机(slave)在数据量不大且传输距离短的场合下使用,比如对EEPROM的读写操作,就需要采用IIC协议实现读写操作(两线串行接口的双向数据传输协议)。主机(PC)启动总线,并产生时钟用于传输数据,此时任何接受数据的器件都被认为是从机。IIC总线是由数据线SDA和时钟线SCL构成的,发送接收数据都行,在主从机之间进行双向数据传输,各种被控器件(从机)均并联在总线上,通过器件地址(SLAVE ADDR)识别。如上图可知,当总

2021-03-15 11:09:26 7367 5

原创 输入信号上升沿或者下降沿检测 Verilog代码

如图所示,当检测下降沿时,初始化两个寄存器为高电平;当检测上升沿时,初始化两个寄存器位低电平。当输入信号变化时候,只能在下一个时钟周期检测得到。下降沿检测:1.输入信号打两拍 2.第一拍的信号取反和第二拍进行与运算reg uart_rxd_d0;reg uart_rxd_d1;//wire definewire start_flag;assign start_flag = uart_rxd_d1 & (~uart_rxd_d0);

2021-02-11 21:23:47 6142

原创 FIFO深度计算

感谢邸志雄老师的《芯动力——硬件加速设计方法》课程邸老师主页 https://customizablecomputinglab.github.io/题目:首先分清楚数据在重载和轻载时数据的传输任务,如果FIFO的深度能在重载的时候满足需求,轻载肯定可以。以下是数据分布的几种可能性,第一种两个80的数据连接在一起,属于重载。所以最长的数据burst=160,连续传输数据的周期,称为burst长度。那么这个burst的持续时间是:160数据✖写时钟周期这段时间内读出的数据=时间段长度➗读时钟周

2020-07-29 21:29:22 423

原创 systemverilog之interface

在芯片的验证过程中,实施验证通常需要经过以下几个步骤:生成输入激励、捕获输出响应、决定对错、衡量进度、反复迭代。Verilog模块互联对Verilog来说,主要通过模块的端口(例化)实现模块之间的互联。例如:Verilog模块的端提供了一种描述设计中模块之间连接关系的方式, 但不适用与芯片验证,在验证中有很多缺点:在多个模块中必须重复声明端口在不同模块中有声明不匹配的风险设计规范中的一个改动需要修改多个模块限制了抽象的自顶向下的设计SystemVerilog在Verilog语言基础上扩展

2020-06-17 22:41:04 8007

原创 systemverilog之断言

SystemVerilog Assertion(SVA)–断言断言概述一言以蔽之:断言是设计属性的描述。如果一个在模拟中被检查的属性(property)不像我们期望的那样表现,那么这个断言失败。如果一个被禁止在设计中出现的属性在模拟过程中发生,那么这个断言失败。一系列的属性可以从设计的功能描述中推知,并且被转换成断言。这些断言能在功能的模拟中不断地被监视,从而可以得知设计的功能是否正确。断言是一个“观测员”,它可以观测程序的状态,但它不会改变代码本身。SystemVerilog集成了断言并且能

2020-06-17 01:55:07 10364

原创 systemverilog之覆盖率

覆盖率概述随着设计变的越来越复杂,覆盖率驱动的验证(CDV, coverage driven verification)成为不可或缺的有效的验证手段,需要覆盖率来保证验证的完备性,以及覆盖的全面性。覆盖率是呈现的一-组信息,这组信息可以告诉我们,关于设计的代码、功能等的覆盖信息,是否覆盖全面,有没有漏掉的覆盖点等信息。所以,覆盖率收集的是信息。覆盖率分类:代码覆盖率功能覆盖率断言覆盖率代码覆盖率为仿真I具分析出来的代码执行情况的统计,哪句代码执行到了,哪句代码没有执行到等信息,断言覆盖率是针

2020-06-15 23:23:34 4742 2

原创 systemverilog之OOP

OOP的全称为Object Oriented Programming, 即面向对象编程。SystemVerilog引入了一个面向对象的数据类型,对象是类的实例,类是对象的模板。比如 人是一个类,是一个模板,里面有吃饭睡觉说话等特性,然后实例男人女人老人小孩。P a;//P是之前定义的一个类,属于一个数据类型,a属于P的一个实例int b;//与第一行是一个意思,int是一个数据类型,定义了一个int型变量b类是一种数据类型, 它包含了数据以及对数据进行操作的子程序(函数和任务)。类的数据被称为类属

2020-06-12 19:02:42 1815

转载 SystemVerilog logic、wire、reg数据类型详解

作者:民工袁师傅链接:https://zhuanlan.zhihu.com/p/38563777来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。在Verilog中,wire和reg是最常见的两种数据类型,也是初学者非常容易混淆的概念。SystemVerilog的一大改进是支持logic数据类型,它在多数时候可以不加区分地替代wire和reg。但如果不熟悉logic的限制随意使用,也容易遇到意想不到的错误。本文主要对比三种数据类型的区别,并总结它们的使用方法。Veril

2020-06-02 12:56:48 8539

原创 UART接收器

UART发送器这两个模块可以仿真通过,代码文末贴上。UART发送器简介UART接收器负责接受串行比特流,去除起始位并且以并行格式将数据保存到主机数据相连接的寄存器中。接受器的时钟信号是发送器时钟信号的八倍,这样使得接受器可以在发送器对应一个时间间隔内工作。输入为低电平后连续采样到0值表明起始位到来,而且增加三次采样来确定起始位是否有效,此后的8个连续位在每个发送时钟周期内被采样。UA...

2020-03-26 11:48:31 909

原创 UART发送器

##UART介绍通过串行数据通道进行信息交换和远程交互的系统使用串行器/解串器(SerDes)接口进行数据串并格式的转换。它作为主机/设备和串行数据通路之间的接口如图。**主机以并行字格式储存信息,以串行单比特格式发送和接受数据。**调试解调器也称异步收发器(UART),该设备能够接受和发送串行数据,而且接受和发送单元不同步。UART以ASCII码格式交换文本信息。其中每个字母符号采用7位编...

2020-03-24 21:22:44 725 1

空空如也

空空如也

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

TA关注的人

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