IC基础
acmgotoac
这个作者很懒,什么都没留下…
展开
-
时序约束基础
1转载 2022-08-03 12:10:48 · 101 阅读 · 0 评论 -
IC基础:找第一个1的位置
给定一个输入,求从最高位开始第一个1所在的位置,第一反应是用计数器寻找,那么怎么用组合逻辑在一个周期内完成呢?二分译码module first( input [7 : 0] din, output [3 : 0] pos); wire d0, d1, d2; wire [3 : 0] temp0; wire [1 : 0] temp1; assign d0 = | din[7 : 4]; assign temp0 = d0 ? din[7 : 4原创 2022-04-26 10:48:11 · 1025 阅读 · 0 评论 -
解决FIFO读写位宽不等的问题
上周阿里面试官问ram两侧读写位宽不一样改如何解决?当时含糊了一下,事后再认真分析其中缘由。思路取读写位宽的最大公因数作为ram的位宽,控制读写指针的步进,并预测下一次的步进module sync_dff_wid_fifo#( parameter I_WID = 15, parameter O_WID = 10, parameter FIFO_WID = 5, parameter DEPTH = 8, parameter ADDR_WID = 3, pa原创 2022-04-06 23:32:25 · 2521 阅读 · 5 评论 -
IC基础:解决FIFO最小深度
原则:写侧背靠背(即最大写速率过程),读侧最慢读过程,过程(一段时间)中写侧数据量-读侧数据量=FIFO最小深度参考本文,心里默念以上原则,必理解========================================2022.03.23...原创 2022-03-23 11:29:40 · 279 阅读 · 0 评论 -
IC基础:解决浮点数无损定点化(计算机组成原理部分)
首先应该清楚什么是浮点数什么是定点数?浮点数:小数点位置不确定的数,例如1.1 * 1.1 = 1.21,小数点的位置发生了移动。浮点数的表示方法:符号位+指数部分+尾数(尾数为 1.尾数B 的形式)参考定点数:小数点的位置是固定的,在verilog中,我们可以人为约定小数点的位置和符号位的位置,类比补码,其实都是认为赋予它权重的,实际上只是一串二进制码而已。浮点数定点化参考此文步骤:先左移扩大,左移位数由定点化后的小数部分尾数n决定,取整,量化精度为2的n次方分之11中舍去部分乘原创 2022-03-23 10:50:55 · 464 阅读 · 0 评论 -
IC基础:解决时序优化和面积优化
时序优化,往往需要解决的问题是缩短关键路径(critical path)参考pipelineretiming(寄存器配平),目的是尽可能将寄存器与寄存器间的延迟配置为差不多的延迟,木桶效应逻辑复制,如果某一寄存器输出fanout过大,会导致信号到各个逻辑节点的路径边长,从而成为关键路径,因此可用多个寄存器分担fanout。操作符平衡,(加法树,乘法数),不用等待上一层结果出来再一层层计算,可以分组计算,降低逻辑延迟。消除代码优先级(无优先级的逻辑用case代替ifelse)关键信号后移,.原创 2022-03-23 10:05:26 · 2175 阅读 · 1 评论 -
IC基础:解决低功耗问题
参考首先,功耗的来源静态功耗:主要由漏电流产生。动态功耗:短路功耗(反相器pmos,nmos同时导通时相当于短路),翻转功耗(电平翻转过程中输出端电容充放电)。静态低功耗技术多阈值工艺(Muti-vt design)阈值电压vt越低,越容易翻转,速度越快,漏电流越大,静态功耗越大;反之,阈值电压越高,越不容易翻转,速度越慢,漏电流越小,静态功耗越小。电源门控(power gating)动态低功耗技术多电压域(muti-voltage domain),电压隔离单元原创 2022-03-22 19:45:23 · 1230 阅读 · 0 评论 -
IC基础:解决CRC
参考说明:生成多项式最高次r次(r次和0次不能为0),对应LFSR触发器有r级,先画电路图,从最高位反馈LFSR初值为全0待测序列n位,需要扩充至n+r位,按照LFSR移位n+r位,由于LFSR初值为0,因此开始的n次把待测序列移位进入LFSR以下例子中,G(x) = x4 + x2 + 1(r = 4),M(x) = 8’b11011011,模拟过程+VCS仿真:VCS:schematic:......原创 2022-03-20 15:51:36 · 489 阅读 · 0 评论 -
IC基础:解决时钟切换电路
一种无毛刺的时间切换解决方案,某发笔试题。Code:module glitch_free_clock_switching( input clk_0, input clk_1, input rst_n, input select, output o_clk); //=================defination wire s_0, s0; wire s_1, s1; reg s_0r, s_0rn; reg s_1原创 2022-03-19 10:43:31 · 444 阅读 · 0 评论 -
IC基础:解决分频器
偶数分频(太简单不写了)D触发器级联并Q非连D,实现2的n次幂分频计数器分频,0和n/2处反转50%奇数分频0,n/2处反转将分频后的信号在原时钟negedge打一拍,将两个信号相或Code:module odd_divider#( parameter N, parameter N_2)( input clk, input rst_n, output clk_N); //==============defination原创 2022-03-18 21:02:59 · 515 阅读 · 0 评论 -
IC基础:解决除法器
说明本文只针对无符号整数的除法,当输入是补码时,可以取绝对值运算,最后再判断符号即可;被除数用a表示,除数用b表示。a,b位宽均为n步骤:扩展a为2n位,高位补n个0;扩展b为2n位,低位补n个0;a左移一位;判断a是否大于等于b,是则a=a-b+1(此处模拟除法运算,可以手动模拟除法的流程,其中+1就是再给低位给商的结果),否则保持;循环到移位,移位n次后得到结果,高位为余数(remainder),低位为商(quotient)。Code: 状态机实现,延迟为17个cl.原创 2022-03-18 13:02:06 · 505 阅读 · 0 评论 -
IC基础:解决加法器
直接上图了。还有Wallace_tree,基础是Carry_saved_array,CSA和全加器是一样的结构,只是Wallace_tree对这个结构的认识出发点不一样,它认为全加器就是一个三输入两输出,即把三输入加法变为两输入的加法(模二加法也就是异或结果和进位左移移位的结果)=======================================2022.03.18...原创 2022-03-18 00:12:20 · 649 阅读 · 0 评论 -
IC基础:解决乘法器
叙述说明:默认输入输出均为补码只考虑逻辑门的延迟,组合逻辑完成算法,暂不考虑时序,若时序不满足,也可采用流水线分解乘法步骤。形如dout = a * b (a为被乘数mutiplicant,b为乘数mutiplier)a,b位宽均为n普通乘法器mutiplier最高位的权重为(-)的 (2的n-1)次方,其中n-1次方对应mutiplicant左移n-1次方。-(负号)对应补码取反加一:此处分情况讨论, a为正数,-a为负数,-a的补码等于a的补码符号位取反,其余位取反加一,即a的补码所原创 2022-03-17 23:23:17 · 531 阅读 · 0 评论 -
IC前端:解决CDC
说明:clk_s(source clk)clk_d(detination clk)参考单比特信号CDC慢到快(满足三时钟沿要求,即慢时钟域中信号宽度是快时钟域时钟周期的1.5倍以上,目的是保证在快时钟域内一定可以采到信号):2-DFF-synchronizer注意:源时钟域中的组合逻辑输出先在本时钟域中同步,消除毛刺。快到慢(不满足1的情况统一归为2)需要握手的同步不需要握手的同步(默认发来单周期脉冲且脉冲之间间隔时间很长,即在同步之前不会发来新的脉冲)多比特信号CDC原创 2022-03-15 16:32:09 · 511 阅读 · 1 评论 -
IC前端:解决STA
建立保持时间的理解多周期约束首先,为什么要多周期约束?因为时序引擎一般都是按照单周期check,即发射沿和捕获沿之间相差一个周期,但有的情况下数据路径复杂,延时较大,又或是过几个周期才使用数据,因此需要对这些情况进行约束。其次,多周期约束有什么作用?可以满足check,得到正确的report,改变原有的检查机制,避免非真实的时序违例或因时序过紧导致资源的浪费。最后,多周期的原则(理解多周期SDC写法的重点)?1.本周期的发射沿不被上一个周期的捕获沿捕获 2.下一个周期的发射沿不被本周期的捕获沿捕原创 2022-03-14 11:18:53 · 438 阅读 · 1 评论 -
CDC-单比特信号跨时钟域同步
参考文章在讨论这个问题之前,我们先对问题实例化,定义单比特信号从源时钟域a(clk_a)同步到目的时钟域b(clk_b)我们可以把这个问题分为两个不同条件下的子问题:时钟域从慢到快,并且满足慢时钟域周期至少等于1.5倍的快时钟周期(参考文章中的“三时钟沿要求”);其它情况,一律视为快时钟到满时钟情况。为什么要有三时钟沿要求呢?因为这样才能保证异步输入信号被目的时钟采样到,在大于快时钟域一个周期时小于1.5时,因为不能确定异步时钟被目的时钟采样的时刻,可能会不满足Tsu和Th的时序约束,可以自原创 2021-09-03 14:50:31 · 236 阅读 · 1 评论