FPGA简介

FPGA是什么

FPGA 就是一个可以通过编程来改变内部结构的芯片

FPGA基本结构

触发器(FF)查找表( LUT)

关于FPGA的更详细内容

Vivado使用

软件安装

根据CPU设计实战:LoongArch版-Vivado的安装学习Vivado的安装

设计流程

RTL设计-仿真-综合-实现-生成比特流

细节可以参考CPU设计实战:LoongArch版- FPGA 的设计流程

24516_1.png

软件使用

根据CPU设计实战:LoongArch版学习Vivado的基本用法

使用Vivado要注意的两个选择:

  1. 选择RTL级

    24516_2.png

  2. 理论上速度-1、-2均可选择;比赛要求团体选择-1,个人选择-2

    24516_3.png

Verilog使用

数据类型

Verilog 最常用的 2 种数据类型就是线网 wire寄存器 reg ,其余类型可以理解为这两种数据类型的扩展或辅助。

Verilog数据类型菜鸟教程传送门

变量定义示例

reg rega;  //定义了一个1位的名为rega的reg型数据
reg[3,0] regb,regc;  //定义了一个4位的名为regb和regc的reg型数据

变量赋值方法示例

assign a = b & c;  //采用assign是描述组合逻辑最常用方法

//“<=”非阻塞赋值
//常用于always块语句

{b,{3{a,b}}}//位拼接运算符,等同于{b,a,b,a,b,a,b}

always语句和module模块

always语句菜鸟教程传送门

module模块菜鸟教程传送门

always语句

//电平触发的always块常常用来描述组合逻辑的行为
//上沿
always @(posedge clock)
    begin
        ...
    end

//沿触发的always块常常描述时序行为
//@(*)和@*都表示对其后面语句块中所有输入变量的变化是敏感的
always @(*)
    begin
        ...
    end

//多个always块并没有前后之分

在”always”块内,如果在给定的条件下变量没有赋值,这个变量将保持原值,也就是说会生成一个锁存器

  • 如果用到if 语句,最好写上else 项。
  • 如果用case 语句,最好写上default 项。

遵循以上可以避免发生综合之后生成锁存器的现象。

实验文件

LoongArch CPU 设计实验

龙芯远程FPGA兼容本地FPGA实验框架

已有 3 条评论

  1. 😥没搞清楚怎么换掉highlight.min.js,对Verilog语言的支持还要等一段时间

    1. @mryoungbw

      把head和footer改了下,先用着

发表评论