FPGA基础知识复习

作者 Lucyyang 日期 2020-04-02
CS
FPGA基础知识复习

啊,虽然总是吐槽FPGA难写难调,但毕竟是从FPGA起家的,手艺活还是不能丢!乘此机会复习一下基础概念和常见的面试考点。

语法基础

模块描述

module block(a,b,c,d);
input[7:0] a, b;
output[7:0] c, d;
wire w1, w2;
reg[7:0] r1; //寄存器类型
assign c = a|b;
assign d = a&b;
endmodule

赋值语句

位拼接符

tmp = {a, b[3:0],w,3'b101};
tmp1 = {4{w}};

非阻塞赋值

b <= a;

  • 上面语句所赋的值不能立即为下面的语句所用
  • 块结束后才能完成这次赋值,所赋的变量值是上一次得到的
  • 编写可综合的时许逻辑模块时,这是最常用的赋值方式

非阻塞赋值

阻塞赋值

b = a;

  • 赋值语句执行完后,块才能结束
  • b的值在赋值语句执行完成后立刻就能改变
  • 在时序逻辑中,可能会产生意想不到的情况

阻塞赋值

重点概念

面试问题