1. [问答] 10分

简单实现x[7: 0]*480

assign out = (x<<9) - (x<<5);

2. [问答] 10分

使用verilog实现2个8bit补码的相加。

补码加法运算_溢出判断——Verilog实现 - 代码先锋网icon-default.png?t=M276https://www.codeleading.com/article/70255812372/

module top_module (
    input [7:0] a,
    input [7:0] b,
    output [7:0] s,
    output overflow
); 
  	assign s=a+b;
    assign overflow=((~a[7])&(~b[7])&s[7])|(a[7]&b[7]&(~s[7]));
            
endmodule

3. [问答] 10分

使用verilog实现下图电路,并简述其用途和优势。

 没图

4.[问答] 10分

时序约束中,setup violation和hold violation的常见原因是什么?

clk_latency+clk_path_delay+t_comb+t_ck2q+dff_setup+clk_uncertainty<=clk_period+clk_capture_latency+clk_path_delay

原因:时钟频率太快,组合逻辑太大、寄存器cktoq时间太长,建立时间太长。温度太高

clk_latency+clk_path_delay+t_comb+t_ck2q>=clk_capture_latency+clk_path_delay+t_hold+clk_uncertainty

原因:寄存器hold时间太长,ck2q时间太短,温度太低

5.[问答]10分

请说明采用查表法实现8bit除以8bit的方法,并说明资源消耗情况。

要求x/y,就是求x*1/y 

对1/y做查表法,y是ram的地址,1/y的结果用matlab算出来,保存为8bit二进制小数(整数为0),放到ram里。这样就用了2^8=256个 * 8bit  = 256byte的ram空间。然后再和x相乘就行了

6. [问答] 10分

FPGA产生两个输出脉冲,要求这两个脉冲之间的延迟为0.5ns,请描述你的实现方案。

先产生一个脉冲信号x

产生一个10MHz的时钟

用一个模为5的计数器,时钟接10MHz,在每一个cnt里做流水线,相当于对x信号delay了五次0.1ns

如何用一个简单的电路给高速脉冲信号做粗略的延时处理(每个脉冲都延时)? - 知乎

7.[问答]10分

请分别解释LUT,CLB,BRAM,ISERDES,GTP,DSP

完全不会

FPGA学习笔记03——FPGA原理及结构_上升沿有效的博客-CSDN博客

(LVDS差分信号简单处理)4. 使用ISERDES接收高速串行数据 - 知乎

8.[问答] 10分

请画出如下语句综合后对应的电路

reg out, int1, int2;

always @(posedge clk) begin

        out<=in1 & in2

        out<= in1^ in2

        out<= in1lin2

end

Verilog设计与逻辑综合实例解析(含代码) - 知乎

 

 就综合了最后一句

9.[问答]10分

请画出如下语句综合后对应的电路

wire wire1, sel1, sel2, a,b,c;

assign wire1 = (sel1==1)? a:sel2?b:c

 

10. [问答] 10分

请用尽量少的2选1 MUX实现一个两输入异或门。

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐