数字IC笔试面试
icrookie
这个作者很懒,什么都没留下…
展开
-
set_multicycle_path 多周期约束
一、时序引擎是如何进行建立时间和保持时间分析的setup检查时序引擎会找出发起时钟和捕获时钟的最小公共周期,然后在最小公共周期内找到所有发起时钟沿和捕获时钟沿的所有可能情况,并在所有情况中挑选出最严苛的情况确定launch edge 和capture edge.hold time检查保持时间要求是以建立时间要求为基准的。有两种保持时间发起沿和捕获沿确定方法:a.当前建立时间发起沿产生的数据不能被当前建立时间捕获沿的前一个时钟沿捕获;b.当前建立时间发起沿的下一个有效沿产生的数据不能被当原创 2020-09-20 21:43:05 · 2781 阅读 · 0 评论 -
亚稳态和跨时钟域CDC
一、亚稳态1.亚稳态的概念:当输入数据不满足寄存器的建立时间或保持时间,寄存器很有可能捕捉到的电平是处于0和1之间的状态,这样输出就不是一个确定的值,就会出现亚稳态2.亚稳态的恢复时间:亚稳态持续了tMET时长后,恢复到稳定的电平状态(稳定,但不一定是正确的),这段持续的时间叫做亚稳态的恢复时间。亚稳态能够恢复稳定,是因为反相器的再生性。一般情况下这段时间不会超过一到两个时钟周期(取决于触发器的性能)。如果亚稳态的持续时间过长,就有可能被下一级的触发器捕获,导致下一级触发器也处于亚稳态,这就是亚稳态的原创 2020-08-22 23:24:56 · 899 阅读 · 0 评论 -
笔试面试 求输入两个数的最大公因数和最小公倍数
一、原理1.使用辗转相除法求最大公约数:两个数的最小公约数等于较小的数和两个数之差的最大公约数,因此可以让两个数相减,得到的结果与其中较小的数再相减,直到两个数相等为止;2.最小公倍数等于两个数的乘积除以最大公约数。二、代码//Description:求最大公因数(gcd)和最小公倍数(lcm)module gcd_lcm #( parameter DWIDTH=8 ) (原创 2020-08-18 22:58:11 · 439 阅读 · 0 评论 -
笔试面试 同步fifo 异步FIFO
一、同步FIFO对于同步FIFO,需要注意读写地址的累加;读空和写满信号的产生代码主要结构:写地址产生读地址产生写入数据读出数据写满信号读空信号//Description:sync fifomodule sync_fifo #( parameter DATA_WIDTH=8, //数据位宽 parameter ADDR_WIDTH=4原创 2020-08-17 23:09:31 · 1231 阅读 · 1 评论 -
笔试面试 浮点数定点化的量化误差问题
本文参考公众号“数字ICer”的文章推送问题来自大疆的笔试题:解析:无论小数有多少位,它的量化精度都是以5结尾的,因此量化12.918肯定不能做到真正的无损量化。根据数学上的概念,只要误差小于精度的一半,就可以认为是无损的。对于本题:整数部分是12,需要四位量化如果量化位宽12位,则小数部分8位,0.918*2^8=235.008,舍去小数位得到235;235再反量化得到235/256=0.00003125;;量化精度为1/256=0.0039,量化误差小于量化精度的一半,属于无损定点化。如原创 2020-08-15 09:01:38 · 1703 阅读 · 0 评论 -
笔试面试 20届紫光展锐数字IC
题目描述;以clk为基准,设计一个秒计数器,在指定的计数值产生中断,实时输出当前的秒计数值(1) clk时钟输入,频率为32.768MHz(2) rst_n是异步复位输入,低电平有效,复位整个系统,为高则整个系统开始工作,其上升沿易同步于clk(3) statr是启动信号,一个clk时钟周期的正脉冲,同步于clk。alarm[7:0]是配置信息,单位为秒,同步于clk(4) 工作模式:收到start后,秒计数器sec_cnt从零开始以秒为单位来计数,计数到alarm[7:0]指定的数值时,产生一个原创 2020-08-12 17:19:38 · 6087 阅读 · 8 评论 -
笔试面试 20届大疆FPGA题目
题目描述:设计一个电路,使用时序逻辑对一个单bit信号进行毛刺滤除操作。高电平或者低电平宽度小于4个时钟周期的为毛刺。用verilog写出代码一、 解题思路::计数器法分别定义一个高电平计数器和低电平计数器,高电平计数器在输入为高的时候计数,计数到3或者检测到低电平清零;低电平计数器在输入为低的时候计数,计数到3或者检测到高电平清零。当计数器计数到3且输入为对应电平(高电平计数器计数到3且输入电平为高、低电平计数器计数到3且输入电平为低),则表示不是毛刺,可以输出。边沿检测计数法只要有原创 2020-08-12 12:58:25 · 1215 阅读 · 3 评论 -
笔试、面试题
题目描述:输入一组数据,剔除最大值、最小值的累加模块分析:首先定义两个寄存器,分别存储最大值和最小值;定义两个计数器,分别存储最大值、最小值出现的次数;定义一个寄存器,累加每次输入的数据sum_r;最后将总和减去所有的最大值和最小值即可。注意:1.很容易忽略最大值、最小值重复出现的情况;2.min的初始值不能设置为0,而应该设置为最大值,这样才能筛选到最小值;3一组数据传输完成后,要清零所有寄存器,为下一组数据的到来做准备上代码://description:对输入的数据去除最大值,去除最小值,原创 2020-08-11 15:42:56 · 177 阅读 · 0 评论 -
一个周期内算出输入的并行13位位宽信号中高电平的个数
module test_v1( input clk, input rst_n, input [12:0]data_in, output [5:0]num ); reg [5:0]num_r;integer i;assign num=num_r;always@(posedge clk or negedge rst_n)if(!rst_n) num_r=6'd0;else begin num_r=6'd0; for(i=0;i<原创 2020-08-10 15:31:10 · 298 阅读 · 0 评论 -
verilog实现半加器和全加器
//描述:用verilog实现半加器,再用半加器实现全加器//==================================<半加器>==========================================================module half_adder( input a, input b, output sum,原创 2020-07-19 15:22:55 · 6060 阅读 · 2 评论 -
verilog实现 斐波那契数列的生成
斐波那契数列的当前数值等于前两个数值相加之和,即Xn=Xn-1+Xn-2;数据为0,1,1,2,3,5,8,13,21,34…module fibonacci_number( input clk, input rst_n, input [15:0] number_eth, //要求出的斐波那契数的排号原创 2020-07-19 15:02:34 · 1928 阅读 · 0 评论 -
笔试面试02:实现任意整数分频
一、核心思想偶数分频偶数分频,分频系数为N,计数器计数到(N/2-1)计数器清零且时钟翻转;奇数分频奇数分频,分频系数为N,在时钟上升沿计数,计数器计数到(N-1)计数器清0,定义两个寄存器变量,clk_odd_p和clk_odd_n,空闲状态下置为0,前者触发条件是时钟上升沿。后者触发条件是时钟下降沿。当时钟触发沿检测到((N-1)/2-1)和(N-1)时,clk_odd_p和clk_odd_n翻转(注意各自工作的触发沿不一样,一个是上升沿,一个是下降沿),然后将clk_odd_p&am原创 2020-07-07 11:18:23 · 420 阅读 · 0 评论 -
笔试面试01
1.写一个模块,输入有三个,输出两个。输入为clk,rst_n,data(16bits),data一直在变化。输出为第二大的数second_biggest_data(16bits),以及该数出现的次数。含义:在一串数据流中找出第二大的数,并统计出现的次数(乐鑫21届提前批面试题)。//decription:find the second biggest data and occur timesmodule data_find( input clk,原创 2020-07-06 13:11:19 · 238 阅读 · 0 评论