![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Digital Chip Design
文章平均质量分 55
Snail_Walker
Google Senior Machine Learning Tech Lead | 行胜于言
展开
-
数字电路设计之低功耗设计方法二:memory-partition
Memory-partition是在进行内存寻址进行读或者写数据的时候,我们寻找地址一般是全部比较一遍,但是我们可以就是先比较第一位,然后在比较接下来的位数。这样就减少了近一般的内存访问次数,大大降低了功耗。原创 2014-06-30 12:34:54 · 3529 阅读 · 2 评论 -
数字电路设计之Spice仿真
Spice的介绍:以下是Spice仿真的流程图。SPICE(Simulation program with integrated circuit emphasis)是最为普遍的电路级模拟程序,各软件厂家提供了Vspice、Hspice、Pspice等不同版本spice软件,其仿真核心大同小异,都是采用了由美国加州Berkeley大学开发的spice模拟算法。Spice是一种功能强大的通用模拟电路仿原创 2014-06-30 13:20:25 · 6909 阅读 · 0 评论 -
数字电路设计之低功耗设计方法五:门控
Clock-gating:在时钟频率加快的同时,有时候会产生不必要的跳转。有的时候输入并没有改变,但是由于时钟的跳转,寄存器的值会被一遍一遍的刷新。可能输入才更改一次,结果时钟已经跳了几万次,这样的差距是可怕的。每次时钟上升沿,输出就要重新计算一遍,这样带来的功耗是巨大的。如果使用门控的话,我们就可以增加一个逻辑,就是只有在满足某种条件之下,时钟的上升沿才会对使得整个电路重新计算。(比如这个条件就原创 2014-06-30 12:57:12 · 2801 阅读 · 1 评论 -
数字电路设计之低功耗设计方法六:旁路(by-passing)
By_passing:这个其实我觉得和clock_gating有着异曲同工之妙,它们都是在做尽可能不要刷新寄存器的值,跳过这一个环节。所以,by_passing是当进行不是load和store的时候,跳过寄存器赋值的环节。原创 2014-06-30 13:14:11 · 2462 阅读 · 0 评论 -
数字电路设计之低功耗设计方法四:预计算
pre-computation:这是一个预先计算,在一定条件下,可以做出判断之后,对于一些没必要的计算那就不计算。如果应用已有的计算无法得出正确的结果,那么就继续往下计算直到计算出所需的结果。这个做法相比原始的全部计算的方法大大降低了动态功耗。比如一个比较器,如果计算第一位更大,那么已经得出了结果,那么剩余位的计算显得不那么重要。没有预计算的代码:有预计算的代码:仿真代码原创 2014-06-30 12:50:47 · 2222 阅读 · 0 评论 -
数字电路设计之低功耗设计方法三:操作数隔离
Isolate-operand:就是在进行一些操作比如选择器的时候,我们选择的那个选项有A和B,但是如果我们直到选择的是A,那么B之前一大堆计算就显得没有必要了。所以操作数隔离也就是增加一些选择器件,如果这个操作数不需要的话就不选择它以及不进行之前计算这个操作数所需要的操作。原创 2014-06-30 12:45:44 · 5806 阅读 · 3 评论 -
数字电路设计之时钟控制器实例
在计算比如y1=a;y2=y1这样的计算的时候如果使用组合逻辑的阻塞赋值就可以实现,但是在有时钟的时序逻辑里面要完成这个的话就需要一些技巧。因为在时序逻辑里面都是使用非阻塞赋值。module clk_model( input wire clk, input wire rst, input wire [7:0] a1, output reg [7:0] y原创 2014-07-26 09:20:58 · 1396 阅读 · 0 评论 -
数字电路设计之同步电路的一些经验
在设计的过程中,异步复位电路对硬件要求更低,更容易实现,但是使用同步复位电路却有着诸多优点,使得在实际的工业设计中更多使用的是同步复位电路。使用同步电路一般有以下好处:第一个就是避免毛刺,使用逻辑电路就一定会有毛刺。使用同步电路就有效避免毛刺。第二个就是简化了时序分析,不然有多个时钟,那么时序上就很难分析了。第三个就是减少环境对设计的影响。异步电路易受工作温度,电压的影响,器件延时变化很大。最终可原创 2014-08-01 20:22:34 · 1960 阅读 · 0 评论 -
数字电路设计之Xilinx全局时钟网络的使用
为了实现同步电路设计,Xilinx使用原创 2014-08-01 20:36:30 · 1022 阅读 · 0 评论 -
数字电路设计之写verilog易犯的错误
有时候写verilog经常会忘记一些东西,这次我写一个CPU原创 2014-08-04 16:22:23 · 1301 阅读 · 0 评论 -
数字电路设计之堆栈的verilog实现
表面上使用verilog实现POP和PUSH十分简单,实际上这里面还是有点学问的。如果是简单的堆栈实现原创 2014-08-05 16:55:25 · 7037 阅读 · 0 评论 -
数字电路设计之verilog的define和parameter
1语法定义parameter xx = yy;`define xx yy ( 注: 句尾无分号)2作用范围parameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效3功能状态机的定义可以用parameter 定义,但是不推荐使用`define 宏定义的方式,因为'define 宏定义在编译时自动原创 2014-08-10 18:32:17 · 1825 阅读 · 0 评论 -
数字电路设计之仿真时碰到的小问题
#10 i_datain #10 i_datain #80 i_datain <= {`SUB0, `gr3, `gr1, `gr0};原创 2014-08-10 16:05:17 · 1452 阅读 · 0 评论 -
数字电路设计之RTL编码指导原则
组塞/非阻塞:“=”用于组合逻辑;“<=”用于原创 2014-08-28 14:17:28 · 3716 阅读 · 0 评论 -
数字电路设计之逻辑综合的优化
很多时候我们进行数字电路设计的时候,我们综合原创 2014-09-15 02:47:20 · 2511 阅读 · 0 评论 -
数字电路设计之Leon系列处理器结构
LEON处理器核心是一个与SPARCV8兼容的整数处理单元IU(Integer Unit),LEON2 是 5 级流水线[21],LEON3 是 7 级流水线。LEON 包含整数硬件乘法和除法单元、双协处理器接口(FPU 浮点处理单元和Co-processor 协处- 15 -哈尔滨工业大学工学硕士学位论文理器),分离的指令和数据总线(Harvard 结构)。LEON 通过高速原创 2014-09-02 22:29:26 · 3389 阅读 · 0 评论 -
数字电路设计之Wallace树形乘法器
这个乘法器是先使用乘法表原创 2014-10-05 14:26:25 · 21123 阅读 · 0 评论 -
数字电路设计之有符号乘法的两种实现
第一种实现:使用原创 2014-10-05 11:19:58 · 3934 阅读 · 1 评论 -
数字电路设计之verilog 原语
supply1 vdd; supply0 gnd;原创 2014-09-28 14:55:32 · 4024 阅读 · 0 评论 -
数字电路设计之m0仿真结果
仿真结果如下:仿真代码:原创 2014-10-22 09:40:06 · 941 阅读 · 0 评论 -
数字电路设计之verilog的门级描述
使用verilog的原创 2014-09-28 15:07:53 · 16817 阅读 · 2 评论 -
数字电路设计之移位器设计2
之前写过一个算数右移的实现,不过原创 2014-09-28 19:22:25 · 5100 阅读 · 0 评论 -
数字电路设计之VGA的字母显示的verilog实现
module vga_initials_top( mclk, btn, sw, hsync, vsync, red, green, blue ); input wire mclk; input wire btn; input wire [7:0] sw; output wire hsync; output wire原创 2014-11-07 21:14:29 · 7500 阅读 · 0 评论 -
数字电路设计之牛顿迭代法计算除法的verilog实现
牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最原创 2014-10-06 20:40:27 · 8458 阅读 · 6 评论 -
数字电路设计之同步状态机的verilog HDL实现
同步状态机的verilog HDL实现:1、状态编码: 二进制编码:比较简单,使用状态向量较少,但是状态间可能会有毛刺。 格雷码:减少了状态间的位变化,降低了功耗有减少了毛刺,但是不适用于很多状态的跳转实现。 独热编码:多少种状态就用多少位实现,当哪一位为1的时候说明处在哪一种状态。2、 HDL描述语言有多种,但是不同的描述电路性能大不相同。一般有3种描述方原创 2014-07-26 09:22:20 · 3281 阅读 · 0 评论 -
数字电路设计之D触发器的门级实现
直接使用行为级描述太简单了,原创 2014-09-28 20:19:51 · 10430 阅读 · 0 评论 -
数字电路设计之GoldSchmidt除法的verilog实现
若a和b均有.1xxxxxx的形式,这是原创 2014-10-06 17:21:28 · 2837 阅读 · 2 评论 -
数字电路设计之function的使用
verilog中也有函数,使用它就可以不用重复制造轮子。 举个栗子原创 2014-09-28 15:39:26 · 1773 阅读 · 0 评论 -
数字电路设计之OpenRISC(一)
ARM,PowerPC等商用IP核价格较高,为了原创 2014-10-28 13:55:20 · 1429 阅读 · 0 评论 -
数字电路设计之加法器的实现
今天在看博客的时候看到有一种新颖的加法器写法,这和之前的超强进位原创 2014-10-28 20:52:39 · 6866 阅读 · 0 评论 -
FPGA之ARM内核的板级仿真方案续 二
为了板级仿真更简单一些,这一次我原创 2014-10-28 18:47:03 · 892 阅读 · 0 评论 -
数字电路设计之格雷码与二进制之间的转换
格雷码相邻数字间只相差一原创 2014-10-29 01:00:27 · 10587 阅读 · 1 评论 -
数字电路设计之自动综合出single port ram
module ram_infer (q, a, d, we, clk);output reg [7:0] q;input [7:0] d;input [6:0] a;input we, clk;reg [7:0] mem [127:0];always @ (posedge clk) beginif (we)mem[a] <= d;q <= mem[a]; // Non-block转载 2014-10-11 19:18:53 · 1086 阅读 · 0 评论 -
数字电路设计之恢复余数除法器的verilog实现
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: SMIE// Engineer: 陈钰// Create Date: 17:21:46 10/05/2014 // Design Name: d原创 2014-10-05 18:31:26 · 5156 阅读 · 0 评论 -
数字电路设计之ARM m0进度(1)
这个例子是用于测试我写的ARM这个内核,测试例子是以讴歌原创 2014-10-21 20:15:58 · 998 阅读 · 0 评论 -
数字电路设计之ARM m0进度(2)
1、已解决问题:跳转指令B0是两条指令原创 2014-10-22 09:32:12 · 692 阅读 · 0 评论 -
数字电路设计之casez,case,casex的用法
case:在case语句中,敏感表达式与各项值之间的比较,是一种全等比较。每一位都必须相同才认为匹配。casez和casex:casez与casex语句是case语句的两种变体, 在写testbench时用到,属于不可综合的语句。1在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。2 在casex语句中,则把这种处理方原创 2014-11-27 09:35:52 · 17788 阅读 · 1 评论 -
数字电路设计之同步时钟采样模块
同步时钟采样模块:为的是使得外部输入的异步信号需要经过系统时钟的同步化,且将输入的异步信号整形成一个时钟长的脉冲信号。module clk_syn( clk,rst,s_in,s_out ); input wire clk; input wire rst; input wire s_in; output wire s_out; reg s_t1,原创 2014-07-26 09:30:00 · 2240 阅读 · 0 评论 -
数字电路设计之低功耗设计方法一:bus总线翻转
Businveter:就是IO的输入输出的变化会导致大量的动态功耗,若采用一个inveter位表示一个输入输出是否需要翻转,可以使得IO翻转大大减少,从而动态功耗也就降低了。具体的操作就是当hanming距离大于bus的bit数加上inveter的位数的变化位数的一半的时候那就翻转,invetert置为1。Haming距离就是前一个输出与当前输出的需要翻转的个数。原创 2014-06-30 12:24:52 · 2991 阅读 · 5 评论 -
数字电路设计之各种触发器的verilog实现
时序电路的基本单位就是触发器,接下来介绍几种同步寄存器的verilog HDL实现。同步RS寄存器:有r(复位),s(置位)。它的缺点在于会有不确定状态x。module RS_Flip( clk,r,s,q,qb); input wire clk,r,s;output reg q;output wire qb;assign qb = ~q;always@(原创 2014-07-26 09:25:18 · 9650 阅读 · 0 评论