zoukankan      html  css  js  c++  java
  • 18.07.05 FPGA入门笔记(1)——“二选一多路器”的开发以及入门诸多注意事项

            开始下定决心学习FPGA,在这里记录自己每堂课的收获!留给以后的自己和刚刚入门FPGA的朋友,这是对自己的激励,也是对自己的监督!

            梅老师的教学前面还有两讲,那两讲的课堂笔记别忘了后续补上!

            18.07.05   FPGA开发基本流程

    1.工程文件夹的排布参考如下。


    (1)doc文件夹存放文档(项目功能描述等)。

    (2)img文件夹存放图像文件。

    (3)prj文件夹存放工程文件(其下有IP文件夹存放IP核文件)。

    (4)rtl存放项目文件。

    (5)testbench存放仿真相关文件。

    (6)想进行工程文件移植时,只需复制rtl文件夹即可。


    2.初步使用Quartus II软件(了解各个工作区的作用以及显示内容)。

    (1)菜单栏:所有功能

    (2)快捷按钮:常用按钮的功能

    (3)工程导航:查询层次结构,包含关系。

    (4)文本编辑器:可以关联其他编辑器。

    (5)IP库:altera intel 所提供的常用IP核的使用。

    (6)任务栏:显示进度和时间,双击可以直接启动任务。

    (7)命令行输入窗口:使用TCL脚本和命令行可以提高操作效率。

    (8)信息提示窗口:编译警告、编译错误等在此显示,需要特别关注。


    3.创建工程的要点。


    (1)工程的所有文件都要存放在与此工程相关的文件夹中。

    (2)不能使用Quartus ii默认的工程存放目录存放工程文件(Q II安装的根目录下)。

    (3)不同的设计项目最好不要放在同一放在同一文件夹下。

    (4)文件夹名以及文件夹所在路径不能用中文、空格、括号。

    (5)工程名称以及设计文件还不能用数字开头,但是可以使用下划线。

    (6)第一栏用于指定路径;第二栏指定工程名,建议直接使用顶层文件的实体名作为工程名;第三栏指定顶层文件实体名。


    4.工程顶层的理解

    (1)顶层模块将包含整个工程的各个模块,相当于PCB板。

    (2)顶层模块实现方式:

     使用原理图文件(.bdf)较为直观但是效率低、可移植性差、不易维护。

     直接使用HDL语言进行例化。(推荐!)


    5.二选一多路器

    输出out可以等于a,也可以等于b,到底等于谁有sel决定


    6.”二选一多路器“开发实战

    (不多说,前面都有!)

    模板工程可以开发新器件,如:MAX 10


    7.Verilog 语法注意事项(写在注释里)


    (1)基本书写格式(module和endmodule等)以及注意事项。

    (2)两种端口定义方式

    (3) Input定义输入类型

    (4)Output定义输出类型

    (5)Inout定义三态类型(IIC中用到)

    (6)组合逻辑中assign语句的使用(将等号后面的赋给前面的)

    (7)判断0和1的多种写法

    (7)两种注释方式:单行注释和块注释(与C语言相同)

    (8)信息提示窗口中出现“i”表示出现了非法字符。


    8.FPGA硬件相关

    (1)EP4CE6和EP4CE10的管脚完全兼容,可以替换。

    (2)M9K存储器的总容量(Bits)除以9216即可得到其数量。


    9.Quartus ii 操作

    1. 在view里可以控制视窗

    2. Ctlr+n快捷创建文件

    3. Ctrl+r打开编译报告

    4. 按住Alt,再用鼠标拖选可以进行列编辑

    5. 管脚分配

    10.simulation waveform editor的使用

    11.MODELSIM 的使用步骤

    FPGA切忌重现象,轻仿真

    (1)设置仿真软件

    (2)设置仿真软件路径

    (3)编写仿真脚本(testbench文件)

    (4)设置NATIVELINK

    (5)运行仿真

    12.编写testbench测试脚本

    1. (键盘右上角)`timescale 1ns/1ps 1ns是步进,以1ns为单位一步一步的进行,换算为ps,精度较低时1ps可以省略(1ps为仿真精度,将换算为1ps进行计算)

    2. 顶层模块名与 文件名保持一致

    3. 管脚加“.”(英文句号)表示例化

    4. 激励源用reg定义

    5. 输出用wire定义

    6. #表示延时,后面的数字代表的时间有步进时间决定

    7. Initial begin 表示仿真开始,仿真时间清零,块内语句顺序执行,时间累加,最后同样也要有end

    8. $stop;可以使仿真停止

    9. 注意:都要有例化名称

    10. 编译可以通过不代表仿真就正常


    先到这里了!!!

    明天继续学编写仿真脚本!!!


       

  • 相关阅读:
    Codeforces Round #649 (Div. 2) D. Ehab's Last Corollary
    Educational Codeforces Round 89 (Rated for Div. 2) E. Two Arrays
    Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors
    Codeforces Round #647 (Div. 2) E. Johnny and Grandmaster
    Codeforces Round #647 (Div. 2) F. Johnny and Megan's Necklace
    Codeforces Round #648 (Div. 2) G. Secure Password
    Codeforces Round #646 (Div. 2) F. Rotating Substrings
    C++STL常见用法
    各类学习慕课(不定期更新
    高阶等差数列
  • 原文地址:https://www.cnblogs.com/LYT-Dveloper/p/12834190.html
Copyright © 2011-2022 走看看