verilog
文章平均质量分 66
一点一点的进步
数字ic设计
展开
-
Verilog 和VHDL有符号数和无符号数相关运算
目录一、Verilog有无符号数运算1.有符号数和有符号数的加减运算(输入和输出为原码)2.无符号数和有符号数的加减运算(输入和输出为原码)3.有符号数和有符号数的乘法(输入和输出为原码)二、VHDL深度讲解二进制无符号和有符号加法处理溢出的问题1.Unsigned adders2.Signed adders2.1 Analysis2.2 Summarystep1:将数据转换为补码。step2:确定输出结果的位宽。(结果的位宽是在最大的一个数据的位宽基础上加一位。如6bit与3bit进行加减,则结果为7b原创 2022-06-29 19:27:17 · 7637 阅读 · 1 评论 -
verilog基础总结
转载 2022-03-18 14:57:06 · 562 阅读 · 0 评论 -
轮询仲裁器和固定优先级仲裁器
轮询仲裁器规则 轮询仲裁的规则是当0、1、2、、、N-1个source信号源同时向仲裁器发出请求时,初始情况下source 0的优先级最高,当仲裁器响应了source0后,source1的优先级最高,依次类推。 轮询仲裁器实现 轮询仲裁器的实现分为检测仲裁器输入口source信号源的request,根据当前仲裁器的优先级响应相应的request,仲裁器grant输出source端的请求,更新仲裁器的优先级。按排序0、1、2、3、4、5…优先级一个个排下来优先级排序ABC...原创 2022-03-17 16:51:03 · 6874 阅读 · 0 评论 -
仲裁器理论基础
在多模块共享同一资源时,需要仲裁器来决定谁可以使用共享资源(如memory access).所以输入是各模块的请求(req),输出是grant。仲裁器(arbiter) 在FPGA主要用于多个source源同时发出请求时,根据相应的优先级来响应哪一个source。FPGA的仲裁器分为轮询仲裁器(Round-Robiin)和固定优先级仲裁器(Fixed-Priority)。 轮询仲裁器规则 轮询仲裁的规则是当0、1、2、、、N-1个source信号源同时向仲裁器发出请求时,初始情况下so...转载 2022-03-16 17:59:08 · 6583 阅读 · 0 评论 -
verilog实现10011序列检测器
目录状态机简介模块设计代码如下:测试平台如下:Makefile仿真脚本VCS+Verdirun.tcl文件仿真波形状态机简介本文设计了一个“10011”序列检测器,采用moore型状态机进行了设计。Moore型状态机:输出只由当前状态决定,即次态=f(现状,输入),输出=f(现状);Mealy型状态机:输出不但与当前状态有关,还与当前输入值有关,即次态=f(现状,输入),输出=f(现状,输入);下面是摩尔型状态转移图模块设计代码如下:`ti...原创 2021-12-30 10:24:27 · 8126 阅读 · 2 评论 -
AMBA——AXI_Lite slave设计实践
AXI-Lite总线系列1 - 基础知识1.时钟和复位3. 传输数据AXI slave设计48,49行 l69行98行156行, 176行行读取,所以这是一个组合逻辑。...原创 2021-12-13 16:50:33 · 451 阅读 · 0 评论 -
AMBA——AHB slave设计实践
GlueLogic : TOP层只有连线,与门就是一个gluelogicTOP层module ahb_calc_top( //input singals hclk, hresetn, hsel, hwrite, ...原创 2021-12-13 16:17:46 · 664 阅读 · 0 评论 -
异步FIFO设计(二)吃透笔记
目录一、FIFO基本概念二、FIFO的作用三、判断空满标志四、指针计数器选择四、异步FIFO的结构及设计代码一、FIFO基本概念二、FIFO的作用参考FIFO存储器概念介绍_博客-CSDN博客为什么图中的同步电路只能用来对一位异步信号进行同步呢?(a)当有两个或更多的异步信号(控制或地址)同时进入本时域来控制本时域的电路时,如果这些信号分别都用上图同步电路来同步就会出现问题,由于连线延迟或其他延迟使两个或更多的异步信号(控制或地址)之间产生...原创 2021-12-10 20:28:57 · 1174 阅读 · 0 评论 -
异步FIFO设计详解
一、FIFO介绍FIFO存储器概念介绍_的博客-CSDN博客二、FIFO的“空”/“满”检测FIFO设计的关键:产生可靠的FIFO读写指针和生成FIFO“空”/“满”状态标志。当读写指针相等时,表明FIFO为空,这种情况发生在复位操作时,或者当读指针读出FIFO中最后一个字后,追赶上了写指针时,如下图所示:当读写指针再次相等时,表明FIFO为满,这种情况发生在,当写指针转了一圈,折回来(wrapped around)又追上了读指针,如下图:为了区分到底是满状态还是空.原创 2021-12-10 19:41:59 · 8332 阅读 · 8 评论 -
verilog伪双端口RAM设计
一个端口只读,一个端口只写;原创 2021-12-10 17:36:54 · 3160 阅读 · 0 评论 -
同步FIFO设计(二)
一、前言 FIFO (First-In-First-Out) 是一种先进先出的数据交互方式,FIFO按工作时钟域的不同又可以分为:同步FIFO和异步FIFO。 同步FIFO的写时钟和读时钟为同一个时钟,FIFO内部所有逻辑都是同步逻辑,常常用于交互数据缓冲。异步FIFO的写时钟和读时钟为异步时钟,FIFO内部的写逻辑和读逻辑的交互需要异步处理,异步FIFO常用于跨时钟域处理。 更多介绍见FIFO存储器概念介绍_冬天里的棉袄博客-CSDN博客二、原理 典型同步FIFO有三部分组原创 2021-12-10 17:23:00 · 561 阅读 · 0 评论 -
同步FIFO设计(一)分模块设计
FIFO介绍见FIFO存储器概念介绍_的博客-CSDN博客同步FIFO结构图:FIFO中的ram一般是双端口ram,所以有独立的读写地址。因此可以一种是设置读,写指针,写指针指向下一个要写入数据的地址,读指针指向下一个要读的地址,通过ptr_gap计数器获得空满标志。用一个位宽为地址位宽拓展一位的计数器ptr_gap判断FIFO空满设置一个计数器,当写使能有效的时候计数器加一;当读使能有效的时候,计数器减一,将计数器与ram的size进行比较来判断fifo的空满状态。这种方法设计比.原创 2021-12-10 16:49:20 · 662 阅读 · 0 评论 -
verilog语法中+:和-:用法
verilog语法中+:和-:主要用来进行位选择。 位选择从向量net、向量 reg、整数变量或时间变量中提取特定位。可以使用表达式寻址该位。如果位选择超出地址边界或位选择为 x 或 z,则引用返回的值应为 x。声明为实时或实时的变量的位选择或部分选择应被视为非法。 向量net、向量 reg、整数变量或时间变量中的几个连续位可以被寻址,称为部分选择。有两种类型的部分选择,常量部分选择和索引部分选择。向量 reg 或 net 的常量部分选择由以下语法给出: vect[msb_expr:lsb...原创 2021-12-09 11:43:36 · 15734 阅读 · 0 评论 -
Verilog中generate的使用
Verilog中的generate语句常用于编写可配置的、可综合的RTL的设计结构。它可用于创建模块的多个实例化,或者有条件的实例化代码块。然而,有时候很困惑generate的使用方法,因此看下generate的几种常用用法。generate的结构类型我们常用generate语句做三件事情。一个是用来构造循环结构,用来多次实例化某个模块。一个是构造条件generate结构,用来在多个块之间最多选择一个代码块,条件generate结构包含if--generate结构和case--generate形式。转载 2021-11-15 19:03:40 · 30155 阅读 · 0 评论 -
VGA原理详解与verilog实现RGB888彩条(二)
一、VCS介绍VCS是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言、PLI和SDF。 VCS具有行业中较高的模拟性能,其出色的内存管理能力足以支持千万门级的ASIC设计,而其模拟精度也完全满足深亚微米ASIC Sign-Off的要求。VCS结合了节拍式算法和事件驱动算法,具有高性能、大规模和高精度的特点,适用于从行为级、RTL到Sign-Off等各个阶段。VCS已经将CoverMeter中所有的覆盖率测试功能集成,并提供VeraLite、CycleC等智能验证方法。VCS原创 2021-12-03 17:46:09 · 5706 阅读 · 2 评论 -
用verilog单端口RAM设计
一、目标用verilog实现一个深度为16,位宽8bit的单端口SRAM。搭建一个仿真环境,完成初始化,读取,写入的操作二、结构图三、设计代码module single_ram#( parameter ADDR_WIDTH = 4, parameter MEM_DEPTH = 16, parameter DATA_WIDTH = 8 )( input clk, input wr_en, input rd原创 2021-12-02 16:59:36 · 3345 阅读 · 0 评论 -
Verilog语法generate_for的使用
一、generate简介Verilog中的generate语句常用于编写可配置的、可综合的RTL的设计结构。它可用于创建模块的多个实例化,或者有条件的实例化代码块。generate有多种用法,一个是构造条件generate结构,用来在多个块之间最多选择一个代码块,条件generate结构包含if--generate结构和case--generate形式。常用的generate_for语句类似于c语言中常用for语句。二、generate_for循环语句必须使用genvar申明一个正整数变量,用作原创 2021-12-03 13:50:34 · 8204 阅读 · 0 评论 -
Verilog测试平台Testbench语法分析
Verilog功能模块HDL设计完成后,并不代表设计工作的结束,还需要对设计进行进一步的仿真验证。掌握验证的方法,即如何调试自己的程序非常重要。在RTL逻辑设计中,要学会根据硬件逻辑来写测试程序即写Testbench。Verilog测试平台是一个例化的待测(MUT)模块,重要的是给它施加激励并观测其输出。逻辑块与其对应的测试平台共同组成仿真模型,应用这个模型就可以测试该模块能否符合自己的设计要求。 编写Testbench的目的就是为了测试使用HDL设计的电路,对其进行仿真验证、测试设计电路的功能、性能转载 2021-12-03 11:19:56 · 2836 阅读 · 0 评论