
IC/FPGA笔试面试基础知识专栏
文章平均质量分 82
加我微信ljs521615,进入FPGA/IC 交流群(2019),加我备注:优快云,进群更改昵称为:地点或学校+职位(或意向职位)+昵称。
李锐博恩
退网中
展开
-
IC/FPGA 技术交流
目录2019年8月2019年9月222019年11月22最后附上本群的公告变迁2019年8月一年一度的校招又来了一段时间了,突然发现,一个人的力量是有限的,面对很多笔试,面试中的很多问题,也许会感到很无助,于是决定建立一个群,专门用来分享,讨论笔试面试题目。现诚邀路过的同行加入,共同奋斗,互帮互助。2019年9月22从突发灵感,邀请同行交流,到现在已经将近300...原创 2019-11-26 21:01:45 · 4392 阅读 · 3 评论 -
FPGA底层资源介绍
目录IOB基本可编程逻辑单元(CLB)BLOCK RAMDSP48GTX固核学了这么久,也该自己总结下FPGA内部结构了,不能总是说FPGA内部有LUT,触发器,选择器,太笼统了,思路一点也不清晰。真怀疑上次我这么回答的,会不会因此而减分(应该会吧)。这篇文章结合自己以往所学所遇之经验来说说FPGA内部之结构。以K7为例,具体型号是xc7k325tffg676-2为...原创 2019-08-06 11:30:52 · 6359 阅读 · 0 评论 -
漫谈时序设计(3)走进时序约束的大门!
目录前言Intra-Clock&Inter-Clock Paths时序约束主时钟约束衍生时钟约束延迟约束伪路径约束多周期路径约束写在最后前言为了秋招,对时序分析做了一些准备,但主要是时序路径,建立时间裕量、保持时间裕量等基础性的东西,没能有一个规范的约束指导,是很难运用到实际当中的。今天这篇博文就给出一个时序约束的大体指导,参考自:时序分析以...原创 2019-11-03 22:48:39 · 13084 阅读 · 4 评论 -
漫谈时序设计(1)跨时钟域是设计出来的,而非约束出来的!
目录亚稳态(Metastability)单比特信号同步慢时钟域到快时钟域快时钟域到慢时钟域多比特信号同步Handshake Mechanism异步FIFO参考链接写在最后这篇博文在于规范解释一些时序相关的概念,尽管之前也已经写过了很多类似的东西,但今天是站在校招结束的状态下做的一些总结,纯粹是想规范下自己的思路,但同时也会引用到之前相关的博文(点击博文的蓝色...原创 2019-11-02 23:41:25 · 5918 阅读 · 1 评论 -
有重叠与无重叠序列之序列检测与序列产生
序列检测与序列产生是一对对称的设计,就像有微分就有积分一样。序列检测分为有重叠检测和无重叠检测;例如检测序列1101011,我们给出输入:110101101011,如果是无重叠检测,则只能检测到一个序列:1101011_01011;如果是有重叠检测,则可以检测到两个这样的序列:11010_11_01011。同理,序列产生也可以分为有重叠序列的产生方法和无重叠序列的产生方法,序列产生的办法也可以用移位寄存器产生,也可以用状态机的方式来产生;这两种方法后面都是提到。由于序列检测我们之前写的太原创 2019-10-05 17:13:23 · 5409 阅读 · 0 评论 -
通过举例谈谈阻塞赋值与非阻塞赋值的区别
这篇博客,通过举例说明:非阻塞赋值和阻塞赋值的区别?一般非阻塞赋值用于时序逻辑,而阻塞赋值用于组合逻辑;非阻塞赋值语句是并行执行的,等到一个时钟完成后才完成赋值,而阻塞赋值是顺序执行的,下一条赋值语句要等到上一条赋值语句完成后才能赋值,并且阻塞赋值是立即完成的;例如:always@(posedge clk) beginb <= a;c <= b;end...原创 2019-10-01 20:04:03 · 7410 阅读 · 2 评论 -
关于三段式状态机第三段是组合逻辑还是时序逻辑的问题?
由于本人一直以来,用的三段式状态机,第三段写法都是组合逻辑写法,但是近期有小伙伴面试小公司,写到状态机的第三段时候,按照我一直用到的组合逻辑来写第三段,提供输出,被提出了质疑,曰:我们一直用的都是时序逻辑来写第三段?由于本人从来没有遇到过这种质疑,所以具体什么情况也不是太清楚,仅仅以此篇博客来作为一种测试,解答第三段如何写的问题。以序列检测器为例,我们分别提供组合逻辑以及时序逻辑来实现第三...原创 2019-10-01 22:35:10 · 6872 阅读 · 18 评论 -
谈谈Mux与门电路的相互替换(包含实例分析)
在秋招中,经常遇到的问题是用Mux替换门电路,例如与门,或门,非门,缓冲器,异或,甚至一位全加器,之前写过与此相关的博客如:【Verilog HDL 训练】第 04 天(竞争、冒险、译码等):4. 如果一个标准单元库只有三个cell:2输入mux(o = s ?a :b;),TIEH(输出常数1),TIEL(输出常数0),如何实现以下功能?4.1 反相器inv4.2 缓冲器buf...原创 2019-09-28 20:37:57 · 15108 阅读 · 4 评论 -
二进制与格雷码之间的转换的Verilog实现(更多一点的讨论)
目录前言二进制码转换为格雷码的方法格雷码转换为二进制码的过程更多一点讨论之generate for更多一点讨论之for最后对格雷码的介绍前言以前的博客也有写这方面的内容,只是没有显式的命名,导致查找复习的时候并不能立即找到,这里单独成立一篇,记录与此,方便你我他。这篇博客来自于FPGA之道,其中提到了格雷码;和格雷码相关的其他问题也贴出来吧:关于格雷码...原创 2019-09-27 14:32:52 · 5140 阅读 · 6 评论 -
谈谈跨时钟域传输问题(CDC)
目录前言单比特信号的跨时钟域传输慢时钟域到快时钟域快时钟域到慢时钟域多比特信号的跨时钟域传输异步FIFO握手协议前言CDC(Clock Domain Conversion)问题,一直是IC前端设计,FPGA设计的热点问题,特别是在校招面试笔试时候,是问的最多的一个问题,我之前关于这个问题以及相关问题,写了一些总结,但比较分散,今天简单汇总总结一下。跨时钟域问...原创 2019-09-24 23:42:32 · 13144 阅读 · 7 评论 -
建立时间裕量与保持时间裕量的简单理解
之前刚接触FPGA时候,了解到时序约束这一块,遇到一个概念就是建立时间裕量以及保持时间裕量,让人十分费解;如今秋招已过,也见过许多这种类型的题目,但是大多类似,都是如下模型;很久以前也有过仔细分析,但是总觉得繁复,让人看了有些恐怖,需要求数据要求时间和数据到达时间,然后建立时间裕量等于数据要求时间减去数据到达时间。如:建立裕量这样理解也没有问题,可以推出数据的建立裕量:上面...原创 2019-09-22 23:36:04 · 7582 阅读 · 0 评论 -
无毛刺的时钟切换电路(Glitch-free clock switching circuit)设计(Verilog)
从秋招的经验来看,Verilog设计类的题目,如:奇偶分频,状态机,序列检测,波形产生,跨时钟域处理,门控时钟,同步FIFO,格雷码与二进制码转换,异步复位同步释放,时钟切换,异步FIFO等,其中最为复杂的恐怕属于时钟切换了吧。无毛刺的时钟切换英文名叫:Glitch-free clock switching circuit,不要把 Clock Domain Conversion当成了时钟切换,...原创 2019-09-21 19:12:12 · 17972 阅读 · 8 评论 -
有关UART的一些实用问题
面试FPGA的一个很基础的问题就是问你对UART的了解,在经过血泪的教训之下,对此进行总结。RS232接口如下图:一般都是9个pin,但有3个pin最重要:pin 2: RxD (receive data). pin 3: TxD (transmit data). pin 5: GND (ground).有这三个端口就能进行收发数据了。收发数据的规则:发送数据的波形图...原创 2019-09-06 21:40:10 · 3138 阅读 · 0 评论 -
【 FPGA/IC 】谈谈复位
目录先谈谈亚稳态:谈谈恢复时间:谈谈异步复位:谈谈同步复位:谈谈异步复位,同步释放:本文本来是接着博文:【 FPGA 】关于FPGA中复位的设计问题(包含异步复位,同步释放方案)来写的,但是还是想说的更清楚些,更多的有自己的思考,或者自己的记忆。先谈谈亚稳态:我们都知道时序不满足会导致亚稳态问题,例如建立时间不满足,保持时间不满足都会导致亚稳态,也就是触发器的输出处...原创 2019-08-30 21:57:30 · 4141 阅读 · 1 评论 -
【 FPGA/IC 】常考加法器总结
早在某发科提前批中就考到过加法器,如果没有记错的话,当时的加法器是串行加法器。今天就谈谈这几种加法器。1、等波纹进位加法器(Ripple carry adder circuit)如下图为一个4位的等波纹进位加法器:它是由4个1位的全加器构成,每一级的全加器的进位作为下一级的进位。1位全加器是由组合逻辑构成的,如下图:可知,全加器的表达式:Si=Ai⊕Bi⊕Ci-...原创 2019-08-15 16:38:41 · 7297 阅读 · 1 评论 -
Verilog 中如何无误使用 generate for?
用一个例子开题:Given an 8-bit input vector [7:0], reverse its bit ordering.即完成输入输出位的反转。当然我们可以直接进行8条assign out[1] = in[7];....;但是如果是更多条如此的重复性赋值呢?我们自然知道要使用for语句,但是如何标准的使用呢?下面介绍generate来完成这个工作。生成语句可...原创 2019-08-14 14:55:14 · 6150 阅读 · 5 评论 -
Verilog中的逻辑运算符与按位运算符的区分
我们在写Verilog的时候经常会用到的是低电平复位问题,例如:always@(posedge clk or negedge rst_n) beginif(~rst_n) ...;else ...;end由于rst_n是一位的,所以使用逻辑非!,或者是按位非~,效果是一样的,但是如果遇到的是向量呢?逻辑非和按位非就不能混用了。包括逻辑或||,按位或|等。二者之间的长相...原创 2019-08-14 12:09:23 · 15187 阅读 · 2 评论 -
控制信号(单脉冲信号)的跨时钟域传输问题
控制信号(单脉冲信号)的跨时钟域传输问题存在两种情况,一种是从快时钟域到慢时钟域传输,如果用慢时钟强行采样快时钟域内的控制信号,可能存在采样不到信号的情况,而且很大概率采不到信号;另一种情况是从慢时钟域到快时钟域的控制信号传输问题,这种情况,快时钟一定能采样到慢时钟域内的控制信号,但是可能出现亚稳态问题;下面针对这两种情况进行处理:快时钟到慢时钟有两个时钟域A和B,脉冲a在时钟域...原创 2019-07-21 17:46:09 · 5155 阅读 · 16 评论 -
跨时钟域传输问题
1、时钟域概念:假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域。假如设计有两个输入时钟,如图1所示,一个时钟给接口1使用,另一给接口2使用,那么我们说这个设计中有两个时钟域。2、同步时钟域与异步时钟域概念:同步时钟域是指时钟频率和相位具有一定关系的时钟域,并非一定只有频率和相位相同的时钟才是同步时钟域。异步时钟域的两...转载 2019-07-18 22:46:54 · 4040 阅读 · 1 评论 -
【FPGA】FIFO的Verilog设计之同步FIFO的设计
这个同步FIFO的设计方法是调用异步读写双端口RAM来实现的。关于异步读写双端口RAM的设计,前面博文已经讲到过了:【FPGA】双端口RAM的设计(异步读写)此时使用双端口RAM来设计FIFO,可以使用一套端口进行写操作,一套端口进行读操作的方式来实现,例如例化方式大概是这样的:ram_dp_ar_aw #(DATA_WIDTH,ADDR_WIDTH) DP_RAM (.addre...原创 2019-05-30 23:05:53 · 6038 阅读 · 2 评论 -
【Verilog HDL 训练】第 14 天(glitch-free的两个时钟切换电路)
2019年5月13日glitch-free的两个时钟切换电路。可以看到这是一个星期之前的题目了,现在才抽空做,把这篇颠倒个顺序吧,也是最后一天了,以后的题目都是讨论性质的,不会以第多少天的形式来写了。这个题目是设计一个时钟切换电路,且使得切换过程中没有毛刺产生。为了理解无毛刺的时钟切换电路,先讨论下时钟切换时产生毛刺的原因:有毛刺的时钟切换电路如下原理图1a:图1a...原创 2019-05-20 21:19:57 · 8048 阅读 · 2 评论 -
算术运算的RTL代码规则总结
这篇博文是上篇博文:【Verilog HDL 训练】第 12 天(数据通路)的指导规则。对有符号数以及无符号数运算的一些指导规则。注:英文为原文,中文为个人认为重要的总结。1. Signed Arithmetic• Rule: Use type 'signed' (VHDL, Verilog 2001) for signed/2's complement arithmetic (d...原创 2019-05-16 11:03:52 · 5431 阅读 · 2 评论 -
【Verilog HDL 训练】第 13 天(存储器、SRAM)
存储器。1. rom,ram,flash,ddr,sram,dram,mram..列举并解释一下这些名词。 2. 用verilog实现一个深度为16,位宽8bit的单端口SRAM。搭建一个仿真环境,完成初始化,读取,写入的操作。 3. 接第2题,如果同时对一个地址进行读和写操作,会怎样?实际中应该如何处理?4. 使用单端口SRAM构造一个双端口同步FIFO。解答:1. ro...原创 2019-05-18 18:11:09 · 10627 阅读 · 4 评论 -
【Verilog HDL 训练】第 12 天(数据通路)
数据通路。y = func(a,b)func可以是加法,减法,乘法,比较,移位,舍入,饱和等。分别针对有符号数,无符号数的情况。 提示:可以参考synopsys的一篇文档 https://t.zsxq.com/QF6QNju加法:对于无符号数而言:module arithmetic( input [3:0] a, input [3:0] b, o...原创 2019-05-15 23:07:06 · 2620 阅读 · 0 评论 -
【 Verilog 】always@()的敏感源中为什么不能双边沿触发?为什么不能双时钟触发?
最近用Verilog HDL设计了一个小电路,一个3分频的电路,用的是我刚接触FPGA时,别人告诉我的思路,没想到今天才发现有大问题?如下:module Freq_divide( input clk, input rst_n, output reg clk_divide ); wire clk_reverse; assign clk_reverse = ~clk;...原创 2019-05-15 15:47:25 · 18412 阅读 · 9 评论 -
【Verilog HDL 训练】第 11 天(分频电路)
设计一个占空比50%的三分频电路。针对这个分频器,博文的末尾会给出一个反面教材,这是我上次写的一个分频器,看起来很好,其实是不能综合的。针对其中的错误,我令立博文记录之:【 Verilog 】always@()的敏感源中为什么不能双边沿触发?为什么不能双时钟触发?感谢学习道路上的前辈给予的指导:下面的分频器思路是:画了个草图:给出Verilog HDL描述:modul...原创 2019-05-15 16:21:48 · 5680 阅读 · 3 评论 -
【Verilog HDL 训练】第 10 天(PWM 呼吸灯)
5月8日PWM用verilog实现PWM控制呼吸灯。呼吸周期2秒:1秒逐渐变亮,1秒逐渐变暗。系统时钟24MHz,pwm周期1ms,精度1us。今天的题目我是第一次见,答案借鉴大神的:Verilog没有葵花宝典打卡day10.md简述PWMPWM——脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术...原创 2019-05-08 20:59:19 · 3979 阅读 · 3 评论 -
边沿检测与信号同步?
关于边沿检测,之前写过的博文不下于3篇了,个人感觉是十分重要的。今天重新来谈边沿检测,是对边沿检测的一个认识的提升,同时提出自己的疑问?最后提出自己的观点,以及给出其一个简单应用,通过实践,可以看出边沿检测可以对信号进行同步(本测试,用的是慢时钟信号)。下面是具体笔记:边沿检测的学问当然,如果不方便观看,可以下载pdf文档观看:边沿检测参考文献:https://www.f...原创 2019-05-08 17:09:46 · 2250 阅读 · 0 评论 -
【Verilog HDL 训练】第 09 天(按键消抖)
5月7日按键防抖1. 用verilog实现按键抖动消除电路,抖动小于15ms,输入时钟12MHz。在编写Verilog代码之前,先分析下一些前提问题,首先是几个按键(1个,多个),我们以1个和三个为例;其次是算下按键按下后计数多少后,采样按键值,这个需要简单的运算:输入时钟为12MHz,也就是大约80ns的周期,那么去除15ms的抖动,需要计数多少次呢?经过计算,大约18000...原创 2019-05-07 19:59:02 · 6505 阅读 · 8 评论 -
【Verilog HDL 训练】第 08 天(二进制、Johnson、环形计数器)
5月6日计数器 1. 用verilog实现一个4bit二进制计数器。a) 异步复位b) 同步复位input clk, rst_n; output [3:0] o_cnt;Verilog实现代码:module count_2( input clk, input rst_n, output reg [3:0] o_cnt) always @ ...原创 2019-05-06 15:40:44 · 4087 阅读 · 3 评论 -
Verilog 中的移位(算术移位, 逻辑移位, 循环移位)
(1)>>>(算术右移)与>>(逻辑右移)的区别:逻辑右移就是不考虑符号位,右移一位,左边补零即可。算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,;否则,就补0。所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次方。例如,8位二进制数11001101分别右移一位。逻辑右移就是[0]1100110算术右移就是[1]1100110...原创 2019-05-04 14:57:21 · 101666 阅读 · 13 评论 -
【Verilog HDL 训练】第 07 天(串并转换)
串并转换1. 复习verilog语法【选做题】- 文件操作fopen fdisplay fwrite fclose- 生成随机数 random- 初始化 readmemh readmemb - finish stop这几个我真没用过,先给一个优秀的链接:FPGA篇(四)Verilog系统函数介绍($display,$fopen,$fscanf,$fwrite($fdispl...原创 2019-05-03 17:49:25 · 3935 阅读 · 2 评论 -
【Verilog HDL 训练】第 06 天(边沿检测)
1. 复习verilog语法【选做题】- reg和wire的区别 寄存器数据类型Verilog中规定,凡是在程序块中被赋值的变量,都必须是寄存器类型的。(程序块:例如always块)这里未免还是会让人产生疑惑?寄存器数据类型的变量最后一定会被综合成寄存器吗?对应于实际的数字电路中,如果该程序块描述的是时序逻辑,则该寄存器变量对应为寄存器;如果该程序块描述的是组合逻辑,该寄存...原创 2019-04-29 10:44:03 · 2885 阅读 · 0 评论 -
跨时钟域信号传输问题之握手同步
所谓握手,即通信双方使用了专用控制信号进行状态指示,这个控制信号既有发送域给接受域的也有接收域给控制域的,有别于单向控制信号方式。使用握手协议方式处理跨时钟域数据传输时,只需要对双方的握手信号(req 和 ack)分别使用脉冲检测方法进行同步,在具体实现中,假设req ,ack, data,总线在初始化时都处于无效状态,发送域先把数据放入总线,随后发送有效的req信号给接收域;接收...原创 2019-04-28 22:46:02 · 12260 阅读 · 13 评论 -
【Verilog HDL 训练】第 05 天(序列检测)
1. dff和latch有什么区别。 锁存器是一种对脉冲电平(也就是0或者1)敏感的存储单元电路,而触发器是一种对脉冲边沿(即上升沿或者下降沿)敏感的存储电路。"触发器" 泛指一类电路结构, 它可以由触发信号 (如: 时钟, 置位, 复位等) 改变输出状态, 并保持这个状态直到下一个或另一个触发信号来到时, 触发信号可以用电平或边沿操作."锁存器"是触发器的一种应用类型 。强调的是通过...原创 2019-04-26 17:40:32 · 2669 阅读 · 0 评论 -
【Verilog HDL 训练】第 04 天(竞争、冒险、译码等)
1. 什么是竞争和冒险?记得我刚学FPGA那会,恶补基础知识,其中之一就是竞争与冒险,我参考了《FPGA之道》,记录了几篇博客:【 FPGA 】组合逻辑中的竞争与险象问题(一)第一篇博客中写道了单输入组合逻辑,如下:这个例子最简单,却最能说明什么是竞争,以及由竞争导致的险象,也即冒险。输入为A先于not(A)A非到达或门,因此,如果初始令A为1,则NOT(A)为0,之后A变...原创 2019-04-25 23:05:41 · 5693 阅读 · 1 评论 -
【Verilog HDL 训练】第 03 天
阅读某工艺库:http://bbs.eetop.cn/thread-611701-1-1.html第一次见这种东西,只能尝试摸索下,待修正!大神答案:https://t.zsxq.com/JaqzjqR1. 了解目录结构:与前端相关的比如文档(doc),仿真模型(verilog/vhdl),标准单元库(synopsys/symbols)1. 了解目录结构:与前端相关的比如文档...原创 2019-04-24 22:15:19 · 1993 阅读 · 0 评论 -
【Verilog HDL 训练】第 02 天
1. 画一下电路图:CMOS反相器、与非门、或非门、三态输出门、漏极开路门。CMOS反相器电路由两个增强型MOS场效应管组成。上方为P沟道增强型MOS管,下方为N沟道增强型MOS管。CMOS反相器电路由两个增强型MOS场效应管组成,其中TN为NMOS管,称驱动管,TP为PMOS管,称负载管。 NMOS管的栅源开启电压UTN为正值,PMOS管的栅源开启电压是负值,其数值范围在2~5V...原创 2019-04-23 17:51:58 · 3953 阅读 · 4 评论 -
【Verilog HDL 训练】第 01 天
1. bit, byte, word, dword, qword的区别 ?1 qword = 4 word;1 dword = 2 word;1 word = 2 byte;1 byte = 8 bit;百度百科的解释:qword1个二进制位称为1个bit,8个二进制位称为1个Byte,也就是1个字节(8位),2个字节就是1个Word(1个字,16位),q就是英文qua...原创 2019-04-22 20:26:40 · 3236 阅读 · 0 评论 -
FPGA笔试题解析(五):串并转换与奇分频电路
串并转换与奇分频原创 2019-03-03 22:43:34 · 4224 阅读 · 2 评论