数字集成电路
文章平均质量分 86
Rill
这个作者很懒,什么都没留下…
展开
-
数字集成电路设计-1-用一个mux和一个inv实现异或
引言 今天遇到一个问题,如题,想了十来分钟都没有想出来,现在想出来了,觉得挺有意思。1.1 verilog实现module xor_rill(input a,input b,output z);assign z = a?(~b):b;endmodule1.2 电路图1.3小结如果要用基本的与或非门,要用2个与门,2个非门,原创 2012-09-04 13:10:26 · 17940 阅读 · 6 评论 -
数字集成电路设计-13-常用模块集锦
引言C语言,C++语言等软件编程语言吸引我们的一个很重要的原因是他们都能提供非常丰富的函数库供我们使用,大大提高coding的效率。但是像verilogHDL等HDL语言这方面做的比较弱,尤其是可综合的语法,基本没有通用的模块库供我们使用,所以编码效率会比较低。如果我们把平时经常使用的一些模块积累起来,慢慢的标准化,这样以后我们再设计新的电路时,就会方便很多,今天就是开始。1,判断两个信号是否相等原创 2014-09-26 23:17:49 · 6752 阅读 · 0 评论 -
数字集成电路设计-14-DPI
引言在进行IC验证时,尤其是规模较大的时候,单纯用Verilog和SV来构建testbench,可能会稍显吃力。在这种情况下,使用C或者C++等软件语言往往会大大加快验证速度,提高验证效率。PLI,VPI,DPI正是基于这个原因开发的,很多仿真器都会提供支持。之前,我们介绍过VPI的使用,本小结就来说一下更易使用的DPI。1,基本功能还是惯例,通过一个具体的实验来体会DPI的使用。环境:IUS82原创 2014-09-29 21:43:13 · 7258 阅读 · 1 评论 -
数字集成电路设计-15-DPI(续)
引言对于SV,无论是构造测试激励,还是模拟硬件的并行行为,DPI都是非常方便的。上次我们介绍了SV里面通过“import”导入并调用C函数。本小节,我们通过一个简单的例子来说明C语言函数如何调用SV的task和function。1,SV部分/** test.v Rill create for dpi test at 2014-10-20*/`timescale 1ns/1nsmodu原创 2014-10-25 20:41:24 · 4810 阅读 · 0 评论 -
数字集成电路设计-16-关于AXI协议
引言AXI协议有可能是我们平时电路设计时经常遇到的一个协议,也是一个不错的协议,本小节我们就来熟悉一下。乍一看,AXI协议的信号众多,眼花缭乱,容易发蒙。但其实其基本思想很简单。只要掌握以下几点:1,valid/ready协议axi协议是典型的基于valid/ready协议的总线协议。valid/ready协议的优势就是master和slave的相对独立性比较好。对于一次传输,作为master的发原创 2015-03-12 11:40:47 · 14152 阅读 · 1 评论 -
数字集成电路设计-17-svunit环境构建
引言做IC验证时,除了采用SVA,DPI等验证手段,还可以采用svunit开实现module级别的验证。1,什么是svunit?VUnit is a unit test framework for developers writing code in systemverilog. Verify systemverilog modules, classes and interfaces in iso原创 2015-04-28 22:23:40 · 5587 阅读 · 0 评论 -
数字集成电路设计-20-multi-cycle
引言前面我们介绍了流水线的写法(http://blog.csdn.net/rill_zhen/article/details/45980039),流水线是数字设计中很常用的一种设计方法,可以提高运行频率,提高吞吐量。如果组合逻辑延迟较大,一个时钟周期完成不了时,除了插入寄存器将组合逻辑拆分成流水线外,还可以采用multi-cycle的方式。multi-cycle的工作机制很简单,从给定输入之后,等原创 2015-05-29 21:09:50 · 7412 阅读 · 2 评论 -
数字集成电路设计-18-UVM
引言UVM(Universal Verification Methodology)可以理解为形而上的东西,可以理解为是基于System verilog的一个库,提供一些API调用。其实没必要把UVM抬的那么高,上升到形而上的层次。因为在实际的IC验证时,对某个复杂DUT的验证时,一般都会拆分成那几个模块。要对DUT测试,肯定需要先产生测试用例,就是UVM中的sequencer和sequence概念原创 2015-05-24 14:58:52 · 8644 阅读 · 0 评论 -
数字集成电路设计-12-状态机的四种写法
引言在实际的数字电路设计中,状态机是最常用的逻辑,而且往往是全部逻辑的核心部分,所以状态机的质量,会在比较大的程度上影响整个电路的质量。本小节我们通过一个简单的例子(三进制脉动计数器)来说明一下状态机的4中写法。1,模块功能由于我们的目的在于说明状态机的写作方式,所以其逻辑越简单有利于理解。就是一个简单的脉动计数器,每个三个使能信号输出一个标示信号。2,一段式状态机的写法,一般有四种,即一段式,两原创 2014-09-26 20:52:55 · 13720 阅读 · 0 评论 -
数字集成电路设计-10-关于采用两级触发器实现双时钟域信号同步方法的分析与验证
引言实现双时钟域数据的交换,最常见的方法就是采用双时钟的异步fifo。但是对于单根信号线,如果仍然采用异步fifo就显得非常stupid,这时,往往通过两级触发器来实现同步。那么,两级触发器是如何实现同步的呢?本小节就做一个简单的分析和验证。1,一段代码下面是我刚刚从ORPSoC的工程里看到的一段代码://'ddr2_writeback_done':generate in ddr2_if_clk原创 2014-04-12 11:57:04 · 7706 阅读 · 0 评论 -
数字集成电路设计-3-除法器的verilog简单实现(续)
引言1,改成clk方式。2,添加clk,50MHz。3, 添加rst,同步复位。4,添加calc_done,指示计算完成,高有效。3.1 模块代码/** module:div_rill* file name:div_rill.v* syn:yes* author:network* modify:rill* date:2012-09-10*/mo原创 2012-09-10 18:16:00 · 15847 阅读 · 10 评论 -
数字集成电路设计-4-工具之ic compiler
引言IC设计,掌握硬件描述语言和数字电路设计基础知识固然是非常重要的,此外工具的使用也很重要。人和其它动物的重要区别就是,人可以制造和使用工具。借助工具可以大大提高工作效率。一、介绍synopsys ic compiler (v2005.linux)是基于Galaxy设计平台开发的产品。主要的工具有:LEDA LEDA是可编程的语法和设计规范检查工具,它能够对全芯片转载 2012-09-18 08:56:40 · 18627 阅读 · 2 评论 -
数字集成电路设计-5-pipelining(流水线)
引言It is quite a three-pipe problem.-- Sir Arthur Conan Doyle所以就分三部分说吧。虽然,指令级并行(ILP)的潜能已经开发殆尽(intel已经在2004年宣布,停止高性能单处理器的研发),流水线技术也已经很成熟了,但是了解流水线,是学习和了解计算机体系结构绕不开的内容。本小节就从三个方面说一下流水线。5.1原创 2012-10-03 21:43:31 · 11824 阅读 · 1 评论 -
数字集成电路设计-6-计算机体系结构
引言 阵而后战,兵法之常,运用之妙,存乎一心。6.1先说两个概念:1》图灵机:说白了,一句话,就是当前状态,和输入,共同决定输出内容。这样的机器,就是图灵机。图灵,是个名人,也是个人名,在二次世界大战中在一个小区里做出了很大贡献,当然不是他一个人在战斗。2》计算机体系结构(冯。诺依曼):也说白了,一句话,就是,数据和操作都放在存储器中,CPU从存储器中取操作和原创 2012-10-13 18:51:03 · 3995 阅读 · 1 评论 -
数字集成电路设计-2-除法器的verilog简单实现
引言除法器在FPGA里怎么实现呢?当然不是让用“/”和“%”实现。在Verilog HDL语言中虽然有除的运算指令,但是除运算符中的除数必须是2的幂,因此无法实现除数为任意整数的除法,很大程度上限制了它的使用领域。并且多数综合工具对于除运算指令不能综合出令人满意的结果,有些甚至不能给予综合。即使可以综合,也需要比较多的资源。对于这种情况,一般使用相应的算法来实现除法,分为两类,基于减法操作原创 2012-09-10 08:41:38 · 67930 阅读 · 4 评论 -
数字集成电路设计-7-一个简单cpu的设计,实现,仿真与综合
引言经过对OpenRISC近一年的分析与研究,在此过程中我们了解了计算机体系结构设计相关的主要概念,重要的技术,和基本思想。我觉的,现在我们有必要练练手了。本小节,我们将设计一个简单的cpu,包括ISA的设计,模块的划分,RTL实现,编写asm汇编程序,用modelsim进行仿真,以及用quartusII的综合。1,计算器与计算机我认为,在EDVAC计算机之前的计算机,都可原创 2013-08-12 16:15:16 · 18743 阅读 · 25 评论 -
数字集成电路设计-8-一个简单sobel图像边缘检测加速器的设计,实现,仿真与综合
引言图像视频处理等多媒体领域是FPGA应用的最主要的方面之一,而在图像处理中,边缘检测是图像处理和计算机视觉中的基本问题,所以也是最常用的,随着数据量的不断增加以及对实时性的要求,一般软件已经不能满足实际需要,这时,就需要专门的硬件来实现加速。本小节就实现一个简单的sobel边缘检测加速器,为了便于对比,我们还编写对应的软件算法。1,基本思想与算法Sobel检测法通过一个叫做卷积的过程来估计每个像原创 2013-10-09 13:32:47 · 6315 阅读 · 2 评论 -
数字集成电路设计-11-SystemC
引言对于稍大一点的project,我们再经过算法验证(C语言/C++语言)之后,直接进行RTL设计,往往比较困难,这时,我们就需要一种介于算法验证和RTL设计之间的形式来实现,而SystemC就是其中比较好的。本小节,我们就熟悉一下SystemC。如果你有C++,C以及verilog HDL的编程经验,你会发现SystemC非常容易使用。1,环境构建SystemC是在C++的基础上扩展了的一个硬件原创 2014-04-16 20:35:12 · 6242 阅读 · 2 评论 -
数字集成电路设计-9-除法器的verilog简单实现(续2)
引言两年前,我写过一个简单的除法器,当时由于时间问题,只实现了一个简单的逻辑电路,但是实际中大多都是时序的,所以后面给出了修改意见,但是并没有进行进一步的测试,最近发现那个简单的除法器引起了很多讨论,本小节就做一个终结。1,RTL编码a,div_rill.v/** module:div_rill* file name:div_rill.v* syn:yes* author:rill* d原创 2014-04-10 18:10:18 · 13764 阅读 · 6 评论 -
数字集成电路设计-19-pipeline的写法
引言之前,我们介绍了数字设计中一些基本组合逻辑的写法(http://blog.csdn.net/rill_zhen/article/details/39586191)以及状态机的写法(http://blog.csdn.net/rill_zhen/article/details/39585367),本小节我们通过一个小实验来熟悉一下pipeline的写法。在多数的资料和教课书中提到pipeline时原创 2015-05-25 21:50:22 · 11936 阅读 · 2 评论