- 博客(146)
- 收藏
- 关注
原创 IC设计行业名企全方位盘点-IC修真院直播
集成电路是一种技术,结合不同专业有不同种类产品。计算机-计算,cpu通信-基带自动控制-MCU感觉上述两家比较传统,集成度低,量大管饱,利润率低。兆易创新新研发中心在西安。华大也是比较传统。IP企业...
2021-08-07 19:49:03
209
原创 跨时钟域信号如何处理 (三、笔试题)
(大疆2020数字芯片)下列关于多bit数据跨时钟域的处理思路,错误的有()A. 发送方给出数据,接收方用本地时钟同步两拍再使用;B. 发送方把数据写到异步fifo,接收方从异步fifo里读出;C. 对于连续变化的信号,发送方转为格雷码发送,接收方收到后再转为二进制;D. 发送方给出数据,发送方给出握手请求,接收方收到后回复,发送方撤销数据。答案:A解析:多bit跨时钟域不能简单使用打两拍,打拍后可能数据错乱;异步FIFO,格雷码(连续变化的地址/计数信号等),握手信号,DMUX...
2021-08-07 14:56:50
810
原创 半导体行业上市名企——E课网直播
500亿市值以上巨头高通海思博通 通信路由器无线网卡wifi芯片联发科 无线通信,数字多媒体。低端处理器,华强北山寨机起家AMD 计算机消费电子初创本土15年700家,现在2000家北上深1000家 无锡杭州西安成都南京武汉合肥厦门都超过100家6. 没听清 可穿戴设备 物联网 安防7. 奕斯伟 显示驱动 触控8. xi zhi 光子AR,深度学习9. 灵明光子10. 睿思芯科 RISC V11. 翱捷科技12.(这里的怎么都没听过,校招积极的怎么一个都没见…)什么
2021-08-05 21:19:13
665
原创 有/无符号数乘法
移位与乘法左移n位等于原来的二进制数乘以2的n次方。比如00011010十进制是26,左移两位后是01101000转成十进制是104恰好是26的4倍。ps:这种倍数关系只适用于左移后被舍弃的高位不含1的情况,否则会溢出。算术右移n位就是有符号位的除法,等于除2的n次方。逻辑右移n位就是有符号位的除法,等于除2的n次方。...
2021-08-03 18:19:49
2685
原创 数字IC前端设计精讲课——IC修真院直播
芯片是分种类的,从事哪方面的芯片设计需要知道相关方面的知识,比如:SOC-计算机体系架构雷达-数字信号处理可综合设计例1.例2.例3.上下沿同时用,没有对应的实际电路例4.全组合逻辑case支持四值,01xz但不影响综合for是结构重复;把不变化的要放到循环外面,减少综合用时不行,还是组合逻辑。...
2021-08-02 20:51:01
818
1
原创 如何成为一名IC验证工程师——IC修真院直播
DUT:device under test验证方法:白盒测试,完整验证。黑盒测试,只关注接口。平台:EDA工具,Linux平台通用验证方法学(Universal Verification Methodology, UVM)C语言在cpu中会用到interface:uart iic spi(用过,整理一下)memorycpu:arm基础知识:微机原理,SOC系统知识SV的学习:DUT,验证方法,提取验证点...
2021-07-31 20:23:32
588
原创 FPGA中的亚稳态
背景一颗芯片上会有许多不同的信号工作在不同的时钟频率下。比如SOC芯片中的CPU通常会工作在一个频率上,总线信号(比如DRAM BUS)会工作在另一个时钟频率下,而普通的信号又会工作在另外的时钟频率下。这3个不同时钟(频率)下工作的信号往往需要相互沟通和传递信号。不同时钟域下的信号传递就涉及到跨时钟域信号处理,因为相互之间的频率、相位不一样,如果不做处理或者处理不当,如下图所示的时钟域CLK_A的数据信号A可能无法满足时钟域CLK_B的setup/hold时间,可能导致:1.数据丢失,无法采到预期中的
2021-07-27 22:37:38
421
原创 Verilog实现时钟分频
普通奇数分频当不要求分频50%占空比时,对输入时钟clk上升沿计数,可以设置两个计数的翻转点,一个是(N-1)/2,一个是(N-1),计数到(N-1)时同时将计数器清零。module clk_div(input clk,rst_n,output reg clk_o);reg [1:0] cnt;always@(posedge clk or negedge rst_n) begin if(!rst_n) cnt<=0; else if(cnt==2) cnt<=0; else
2021-07-24 20:59:07
2962
2
原创 有/无符号数加减法
有符号数和无符号数运算的位扩展当所有操作数和结果数据位宽一样时,有符号数和无符号数所产生的运算电路是一样的。当所有操作数和结果数据位宽不一样时,无符号数进行0扩展,而有符号数进行符号扩展。在verilog中支持无符号数和有符号数混合使用,当表达式右侧所有数均为符号数时,才进行符号位扩展,否则全部0扩展。8位有符号数8’b11111000,扩展成9位的有符号数,9’b1_1111_1000,很简单高位补1就行,扩成10位,就补2个1,不影响值。...
2021-07-23 15:15:34
8498
1
原创 逻辑移位和算术移位
对无符号/有符号数,逻辑左移和算术左移1位结果一样,均是依次左移1位,低位补0.对无符号数,逻辑右移和算术右移1位一样,依次右移1位,MSB补0.有符号数的逻辑右移和上面一样;有符号数的算术右移,MSB补的是符号位。结论:所有左移都一样;右移只有有符号数的算术右移不一样module shift(a,b);input [2:0] a;input signed [2:0] b;wire [3:0] left1_l,left1_a;wire signed [3:0] left2_l,l
2021-07-23 09:32:11
702
转载 无毛刺时钟切换电路
switch the source of a clock line while the chip is running.This is usually implemented by multiplexing two different frequency clock sources in hardware and controlling the multiplexer select line by internal logic.there is a chance of generating a glit
2021-07-20 21:42:31
2736
1
原创 FPGA中的复位
对于Xilinx的器件:虽然支持同步/异步复位针对 Xilinx 的 FPGA:(1)对于同一个触发器逻辑,因为同时支持异步和同步复位,所以异步复位并不会节省资源;(2)对于其他的资源,比如 DSP48 等,同步复位更加节省资源。首先,对于 DSP48,其内部还带有一些寄存器(只支持同步复位),如果使用异步复位,则会额外使用外部 Slice 中带异步复位的寄存器,而使用同步复位时,可以利用 DSP48 内部的寄存器;Xilinx 的 FPGA,对于 DSP48、BRAM 资源,使用同步复位比异步
2021-07-19 14:58:17
995
原创 基于Verilog的CRC算法实现
模2加减法模2除法需要用到模2加减法,关于模2加减法,其实就是异或操作,规则如下://不需要考虑进位和借位0 ± 0 = 01 ± 1 = 00 ± 1 = 11 ± 0 = 1例: 1101 ± 1001 = 0100计算如下: 1 1 0 1 ± 1 0 0 1 ----------- 0 1 0 0模2除法:同样不需要考虑进位和借位规则:假设被除数X,和除数P,余数RX除以P**(对X和P做模2加减法,即按位异或)**所得余数R去除首位**(即左移
2021-07-16 13:49:10
4427
2
原创 MOS门电路基础
文章目录NMOSCMOSCMOS与非门CMOS或非门NMOSNMOS(Negative channel-Metal-Oxide-Semiconductor,N型金属氧化物半导体)导电原理:制作两个高掺杂浓度的N+区(N+区域中有大量为电流流动提供自由电子的电子源),作为漏极D和源极S。P衬底。栅极接高电平,吸引电子上来,最终在源-漏极间形成N型导电沟道,就会通电。接低电平则不会导通。本质上就是一个开关,栅极接高电平导通。CMOS由POMS和NMOS组成的互补型电路Vin=1, NMOS导通
2021-07-11 22:14:47
4153
1
转载 IC 设计全流程详解
IC的设计过程可分为两个部分,分别为:前端设计(也称逻辑设计)和后端设计(也称物理设计),这两个部分并没有统一严格的界限,凡涉及到与工艺有关的设计可称为后端设计。前端设计主要流程1、规格制定芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。2、详细设计Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。3、HDL编码使用硬件描述语言(VHDL,Verilog HDL
2021-07-11 21:46:47
5800
转载 FPGA 和ASIC开发的区别
FPGA和ASIC区别很多。ASIC的逻辑通常远远大于FPGA的,门数上有数量级的差别,运行时钟也远远高于FPGA。而且,ASIC只有一次机会,FPGA因为可以编程,所以coding的灵活性相对提高。仅仅从RTL设计上来说:(1)ASIC更趋于保守,对逻辑的任何改动都要三思,并且要做备选的选择,以防改错。RTL的任何修改几乎都是增量修改,即便以前的逻辑错了,也不会删掉,而是多做一个分支。(2)ASIC对coding style的要求更高。所有模块的coding风格要求一致,这样有利于后端以及后续的che
2021-07-10 09:38:23
550
原创 跨时钟域信号如何处理(一、单bit信号)
文章目录影响单bit信号的处理两级DFF同步器影响一颗芯片上会有许多不同的信号工作在不同的时钟频率下。比如SOC芯片中的CPU通常会工作在一个频率上,总线信号(比如DRAM BUS)会工作在另一个时钟频率下,而普通的信号又会工作在另外的时钟频率下。这3个不同时钟(频率)下工作的信号往往需要相互沟通和传递信号。不同时钟域下的信号传递就涉及到跨时钟域信号处理,因为相互之间的频率、相位不一样,如果不做处理或者处理不当,如下图所示的时钟域CLK_A的数据信号A可能无法满足时钟域CLK_B的setup/hol
2021-07-08 08:00:05
6150
6
转载 (完整版!!)十多年从事微波、系统、芯片的经验分享
首先,我只是一个普通的科研人员,曾带团队做过不少军用芯片国产化的替代工作、有幸参与过国家十三五军用芯片发展规划。现在和老大、同学一起创业,在某家芯片设计公司担任设计研发总监。在咱们eetop里面结识了很多微波、数字和IC界的牛人,他们都很低调,自从2003年注册咱们论坛后内心一直想为咱们论坛做些事情,所以我就王婆卖瓜分享自己一路走来的知识和经验,希望能对大家起到一些帮助。一、做IC必须是名校?我只是一个普通211或者本科院校怎么拼?我高考复读,考入普通院校;考研复读,考到成电电工学院,后来因缘巧合从事R
2021-07-07 21:10:22
967
原创 Quartus 在线调试工具In-System Sources and Probes Editor
https://blog.csdn.net/huan09900990/article/details/78893435write source data-continuously 在下面修改完source值自动被写入-manually 修改完source值,要点击上方write source data才被写入
2021-07-04 16:05:44
739
转载 赋值语句及综合结果
本文讨论如何在Verilog中的实现不同的赋值,以及它们在逻辑综合中会推断出什么样的电路。1、当对同一个net,使用多个assign语句,会综合出什么样的逻辑?在可综合的verilog代码中,为同一个net使用多个assign语句是错误的。综合工具会报出语法错误,即“net is being driven by more than one source”。 例如,以下是错误的:图片但是,使用多个assign来驱动三态net 是合法的语句,如下示例所示:图片...
2021-07-03 13:55:05
997
转载 状态机的编码
有三种状态,使用独热码:parameter IDLE =3'b001;parameter ONE =3'b010;parameter TWO =3'b100;二进制码编码则为:2‘b00,2‘b01,2‘b10;而用格雷码编码则为:2‘b00,2‘b01,2‘b11独热码独热码的编码方式,每个状态数只有1比特为1,其余比特都为0,所以3个状态就要用3位宽的变量,也就是一共有几个状态数就需要几位宽的状态变量。为什么使用独热码?那就要从每种编码的特性上说起了,首先独热码因为每个状态只有1bi
2021-06-30 23:28:37
2566
原创 Verilog中的function与task
function和task的定义与调用都包含在一个module的内部,可以在一个module内把很大的程序模块分解成如果较小的任务和函数,使之便于理解和调试。function定义function [返回值类型或位宽] function_id; input_declaration other_declarations begin procedural_statement; endendfunction函数返回值的类型或位宽,是一个可选项,若没有指定,默认缺省值为 1 比
2021-06-30 21:33:30
1691
原创 基于FPGA的奇偶校验
含义奇校验:就是确保发送的数据中1的个数为奇数。因此如果数据位中1的个数是偶数,那就给校验位赋值1,如果数据位中1的个数是奇数,那就给校验位赋值0.实现思路需要统计数据位1的个数。how?可用A、B、……、N求和结果的最低位是1or0来表示有奇数or偶数个1,奇数or偶数个1异或的结果为1or0因此,其中,^data_in是缩位运算符 ^对一个操作数data_in进行运算,先对data_in[0]和data_in[1]运算,得到的结果再与data_in[2]运算…最后产生一位的逻辑值。即当
2021-06-30 19:51:05
2386
转载 (Xilinx)FPGA中的差分信号
LVDSLVDS:Low Voltage Differential Signaling,低电压差分信号。不同电路系统之间的高速信号传送都可以应用低压差分传送技术来实现,LVDS传输支持速率一般在155Mbps(大约为77MHZ)以上,可以实现几百Mbps至几Gbps速率的传输。LVDS信号相对于单端的传送具有较高的噪声抑制功能,其较低的电压摆幅和低电流驱动输出允许差分对线具有较高的数据传输速率,消耗较小的功率以及产生更低的电磁辐射。差分信号抗噪特性从差分信号传输线路上可以看出,若是理想状况,线路没有
2021-06-29 17:11:42
5375
1
原创 SignalTap 逻辑分析仪的使用
问题总结出现instance not found原因: .pof不匹配。FPGA之前固化了别的程序,现在的.stp自然烧不进去。解决:编译之后,将现在的.sof烧写进去。
2021-06-28 22:25:45
2788
1
原创 Quartus 时序分析流程
全编译后(只综合行么?),打开产生时序网表产生时钟约束 100MRUN之后,看报告。可以看出,Tsu不满足。再看哪个路径不满足,from node–to node,差7.175ns保存当下时序约束文件修改约束的时钟 100Mto50Mopen SDC file进行修改,重新Read SDC File时序报告没有违例流水线改进...
2021-06-27 11:20:46
2592
原创 FIFO知识点
什么是FIFO?FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,优点:没有外部读写地址线,这样使用起来非常简单缺点:只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。什么情况下用FIFO?FIFO一般用于不同时钟域之间的数据缓冲,比如FIFO的一端时AD数据采集,另一端时计算机的PCI总线,假设其AD采集的速率为16位 100K SPS,那么每秒的数据量为100K×1..
2021-06-25 19:52:05
1748
原创 基于FPGA的素数累加和
文章目录项目简述MATLAB代码明确功能时序图Verilog代码说明:这是CSDN博主@朽月的基于FPGA/数字IC的数字信号处理课程第一课。部分细节和最后的verilog代码实现按照我自己的思路。基于FPGA/数字IC的数字信号处理课程基于FPGA的素数累加和的计算项目简述这个小项目其实是乐鑫笔试的一道题题目:素数又称质数(在大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除)a、用任意语言实现100以内的所有素数之和b、Verilog实现素数求和器。要求:输入一个小于100的任
2021-06-24 11:18:54
948
1
原创 Modelsim 仿真方法
直接在Modelsim中仿真的流程,不是通过Quartus调用Modelsim。在modelsim中新建工程添加文件后编译执行仿真将tb和test add wave观察波形ctrl+t 还是 g 将信号按模块分开
2021-06-24 10:49:52
232
原创 状态机架构 例4SPI接口之EWEN
明确功能 输入输出信号列表+功能描述rdy信号可以防止在运算过程中,外部又来wr和数据导致的会乱。画功能波形图 明确每个信号的变化情况不能违背器件datasheet的时序要求查阅datasheet可知,假设电平标准为2.7V~5.5V。fSK max=1MHz,1us; tSKH和tSKL min=250ns, 下图是500ns;tCSS min =50ns,下图留有0.5us;tCSH min=0,下图=0;tCS min=250ns,下图=1us;tDIS=tDIH min=100n..
2021-06-22 19:45:51
419
原创 状态机架构 例4SPI接口项目
准备工作明确功能 输入输出信号列表+功能描述画出功能波形图 每个信号的变化情况分析输出划分状态1)csEWEN:收到start拉高,10个SK拉低,经过一个tCS拉高,WRITE: 收到start拉高,到18个SK拉低,经过一个tCS拉高,收到do=1拉低READ:收到start拉高,18个SK拉低,经过一个tCS拉高.可以划分状态为:IDLE∶初始状态,模块在等待 start 信号有效。 WR_RD∶读/写状态。 TCS∶片选信号拉低。 DO∶等待写入操作完成。sk通过计数产生1M
2021-06-16 11:15:52
542
原创 基于FPGA的数码管驱动
译码器:将输入的二进制代码翻译成实际信号,比如存储器的地址,数码管的引脚。数码管:所有 8 个发光二极管的正极或负极有一个公共端,通常必须接 GND(共阴极数码管)或者接 VCC(共阳极数码管)。如果我们使用的是共阴极的数码管,那么就要将其公共端接地(或者接低电平 0),这便是数码管的片选信号。如果 FPGA 的这个 I/O 脚输出低电平 0,那么这个数码管就能够显示数字; 如果这个 I/O 输出高电平 1,那么无论数码管的 8 个段选端输出 0 还是 1,都无法将 8 个发光二极管的任意一个点亮。目
2021-06-14 21:27:45
1111
转载 触发器的Tsu,Th(二、为什么)
为什么会有建立时间和保持时间的要求?从D触发器到主锁存器D触发器的门级结果如下所示:D触发器是在(上升)边沿进行锁存数据的,也就是clk从在0→1的时候锁存数据,那我们就看看这个上升沿的时候发生了什么:假设原来的数据是1(也就是从锁存器锁存的数据是1),然后我们要锁存的数据是0。 首先,要让时钟上升沿之后Q输出为0,根据D触发器的功能:在时钟上升沿的时候锁存在时钟上升沿采到的输入值,并且保持一个时钟周期。——就是要主锁存器在时钟上升沿之后稳定地锁存住0,换个角度看就是:在上升沿到来以及到来之后
2021-06-13 17:10:39
970
原创 从双稳态电路到触发器
文章目录双稳态电路锁存器LatchRS锁存器D锁存器D触发器 Flip-Flop双稳态电路双稳态的定义:指稳定状态有两种,一种是0,一种是1。电路结构:两个非门交叉耦合逻辑功能分析:假设初始状态为1,即Q=1,由于两个非门首尾相接,电路保持在Q=1,Q’=0的状态,这就是第一种稳定状态。应用:双稳态电路有两个稳定状态1和0,可以存储数据。锁存器、寄存器都是双稳态器件。锁存器Latchwhy: 上面的双稳态电路没有输入,是存储不了输入的数据的了。因此就需要有输入的类似“交叉耦合反相器”结构
2021-06-13 16:14:51
2326
原创 基于FPGA的流水灯
output [3:0] led;//LED 1--灭,0--亮/----------------------------------- reg[23:0] cnt;always@(posedge clk or negedge rst_n)beginif (!rst n) cnt <= 24'dO; else cnt <= cnt+1'b1;end//加一条件=1,结束条件也不需要,自然溢出其他信号:ledreq[3:0] led_r;always@(posedge cl.
2021-06-12 21:33:09
258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅