- 博客(22)
- 资源 (2)
- 收藏
- 关注
原创 set_multicycle_path 多周期约束
一、时序引擎是如何进行建立时间和保持时间分析的setup检查时序引擎会找出发起时钟和捕获时钟的最小公共周期,然后在最小公共周期内找到所有发起时钟沿和捕获时钟沿的所有可能情况,并在所有情况中挑选出最严苛的情况确定launch edge 和capture edge.hold time检查保持时间要求是以建立时间要求为基准的。有两种保持时间发起沿和捕获沿确定方法:a.当前建立时间发起沿产生的数据不能被当前建立时间捕获沿的前一个时钟沿捕获;b.当前建立时间发起沿的下一个有效沿产生的数据不能被当
2020-09-20 21:43:05
2984
原创 SDRAM小记
一、知识点存储单元主要由列选通三极管、存储电容、刷新放大器组成。SRAM(异步静态随机存储器)要正确存储一位数据,需要最少6个晶体管,因此,从芯片面积上来说,单片SRAM芯片的容量不可能做到很高。工作电压:SDRAM的工作电压是3.3V,DDR的工作电压是2.5V,DDR2的工作电压是1.8VHY57V281620 芯片,容量128Mbit,数据位宽16bit,具有4个BANK,每个BANK存储32MBit的数据。每个BANK由4096*512个存储单元组成,每个存储单元存储16bit数据。控制
2020-09-09 19:25:24
457
原创 亚稳态和跨时钟域CDC
一、亚稳态1.亚稳态的概念:当输入数据不满足寄存器的建立时间或保持时间,寄存器很有可能捕捉到的电平是处于0和1之间的状态,这样输出就不是一个确定的值,就会出现亚稳态2.亚稳态的恢复时间:亚稳态持续了tMET时长后,恢复到稳定的电平状态(稳定,但不一定是正确的),这段持续的时间叫做亚稳态的恢复时间。亚稳态能够恢复稳定,是因为反相器的再生性。一般情况下这段时间不会超过一到两个时钟周期(取决于触发器的性能)。如果亚稳态的持续时间过长,就有可能被下一级的触发器捕获,导致下一级触发器也处于亚稳态,这就是亚稳态的
2020-08-22 23:24:56
995
原创 笔试面试 求输入两个数的最大公因数和最小公倍数
一、原理1.使用辗转相除法求最大公约数:两个数的最小公约数等于较小的数和两个数之差的最大公约数,因此可以让两个数相减,得到的结果与其中较小的数再相减,直到两个数相等为止;2.最小公倍数等于两个数的乘积除以最大公约数。二、代码//Description:求最大公因数(gcd)和最小公倍数(lcm)module gcd_lcm #( parameter DWIDTH=8 ) (
2020-08-18 22:58:11
485
原创 笔试面试 同步fifo 异步FIFO
一、同步FIFO对于同步FIFO,需要注意读写地址的累加;读空和写满信号的产生代码主要结构:写地址产生读地址产生写入数据读出数据写满信号读空信号//Description:sync fifomodule sync_fifo #( parameter DATA_WIDTH=8, //数据位宽 parameter ADDR_WIDTH=4
2020-08-17 23:09:31
1306
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
1892
原创 笔试面试 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
6153
8
原创 笔试面试 20届大疆FPGA题目
题目描述:设计一个电路,使用时序逻辑对一个单bit信号进行毛刺滤除操作。高电平或者低电平宽度小于4个时钟周期的为毛刺。用verilog写出代码一、 解题思路::计数器法分别定义一个高电平计数器和低电平计数器,高电平计数器在输入为高的时候计数,计数到3或者检测到低电平清零;低电平计数器在输入为低的时候计数,计数到3或者检测到高电平清零。当计数器计数到3且输入为对应电平(高电平计数器计数到3且输入电平为高、低电平计数器计数到3且输入电平为低),则表示不是毛刺,可以输出。边沿检测计数法只要有
2020-08-12 12:58:25
1348
3
原创 笔试、面试题
题目描述:输入一组数据,剔除最大值、最小值的累加模块分析:首先定义两个寄存器,分别存储最大值和最小值;定义两个计数器,分别存储最大值、最小值出现的次数;定义一个寄存器,累加每次输入的数据sum_r;最后将总和减去所有的最大值和最小值即可。注意:1.很容易忽略最大值、最小值重复出现的情况;2.min的初始值不能设置为0,而应该设置为最大值,这样才能筛选到最小值;3一组数据传输完成后,要清零所有寄存器,为下一组数据的到来做准备上代码://description:对输入的数据去除最大值,去除最小值,
2020-08-11 15:42:56
208
原创 一个周期内算出输入的并行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
355
原创 乘法实现
module test( input [3:0] qa, input [3:0] qb, output [7:0]result );integer i;reg [7:0]result_r;assign result=result_r;always@(qa,qb,result)begin result_r=0; for(i=0;i<=3;i=i+1) begin if(qa[i]) result_r=result_r+(qb<<
2020-08-08 22:44:31
244
原创 门控时钟
一、带锁存器的门控时钟module geta_clk( input clk, input enable, output gclk ); reg l_clk; always@(clk or enable) if(!clk) l_clk<=enable; assign gclk=l_clk&clk;综合电路如图所示,就是我们想要的门控时钟二、载入-使能结构module test( input clk,
2020-08-06 14:25:27
681
原创 verilog实现半加器和全加器
//描述:用verilog实现半加器,再用半加器实现全加器//==================================<半加器>==========================================================module half_adder( input a, input b, output sum,
2020-07-19 15:22:55
6316
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
2060
原创 小本本
记录一下维修的经验:电脑插网线连不上网,可能原因IPV4的属性没有改成“自动获取IP地址”;电脑连接上扩展显示屏后没有声音,可能是显示屏自带播放声音的功能,需要把播放声音的设备改成电脑本身,而不是显示屏。右键音量图标即可设置...
2020-07-13 19:41:59
176
原创 笔试面试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
459
原创 ALTERA DDR2 IP核调试记录
一、创建IP核以管理员方式打开QUARTUS II 13.0,新建一个工程,打开MegaWizard plug-in manager找到interface>>external memory>>ddr2,选择第二个IP核,IP核地址选择放在工程同一个文件夹下,等待IP核设置GUI跳出来,win7系统下该图形界面显示不全,可以先将屏幕分辨率调制最低,再将分辨率恢复即可。Device family 和speed grade根据自己的FPGA类型设置,pll参考时钟频率根据实际
2020-07-06 15:10:30
1947
原创 笔试面试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
263
原创 FPGA的乘法运算
概述当前的FPGA中一般都集成了硬件资源乘法器,我们可以在IP CORE 里调用,也可以直接在HDL里直接用"*"来实现乘法,EDA工具会自动综合成乘法器。一、无符号数乘法对于无符号数乘法,需要扩宽结果的位数,比如两个4位无符号数相乘,结果是8位的。reg [3:0]a;reg [3:0]b;output reg [7:0]c;always@(posedge clk or negedge rst_n)if(!rst_n) begin c<=8'd0;
2020-06-29 10:30:42
8644
1
原创 CRC学习总结
一、CRC计算过程概述对于每一种CRC校验,都有一个生成多项式,如CRC-8校验,ploy=x8+x2+x1+1,无论哪一种CRC校验,其最高幂次位和最低位的因数都是1.用一段二进制数表示上式:1_0000_0111,由于CRC计算时最高位1与seed最高位计算时钟为0,会自动消去,因此一般把对高位舍去,写成0x07,但是手动计算时还是要把这个1加上。对于待校验的数据seed,先在其后面部k个0(k为生成多项式的最高次幂),然后将得到的数据和生成多项式异或,直到除尽,舍去商,得到的余数(位宽等于
2020-06-26 21:21:57
3158
1
原创 浮点数小记
一、概述学习当中会碰到浮点数,之前不理解,这次集中查资料终于弄懂了,在这里做下记录。浮点数float分为 半精度浮点数(16位)、单精度浮点数(32位)以及双精度浮点数(64位)。浮点数由符号位(signed)、指数位(Exponent)、尾数位(Mantissa)以及基数构成,二进制浮点数基数是2,十进制浮点数基数是10。半精度浮点数:符号位1位 指数位5位 尾数位10位单精度浮点数:符号位1位 指数位8位 尾数位23位双精度浮点数:符号位1位 指数位11位 尾数位52位二、浮
2020-06-25 15:29:02
496
原创 verilog 中if语句和case语句综合成的电路
先做一句话总结,if语句和组合逻辑下的case语句,他们的条件是有优先级的,从上到下优先级递减,每多一个条件就会多消耗一个二选一多路器,很浪费资源;而对于时序语句中的case,会被综合成n选一多路器,条件没有优先级,占用的资源更少。always_comb if(sel=2'b11) d=a; else if(sel=2'b10) d=b; else d=c; endcase always_comb ca
2020-06-12 09:32:41
15854
crc_8_serial.v
2020-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人