时至今日,终于将全部的计划55条MIPS指令在FPGA上全部验证完毕,通过这近一个月的不断的修改调试、修改调试,我对整个流程对MIPS有了深刻的体会和认识。借着刚刚现阶段任务的兴奋和短暂的空闲时间,将自己这段时间以来的心得体会记录下来,希望可以帮到感兴趣的同学。

 
首先我想说一下MIPS,最开始接触MIPS时,我还认为是百万指令集的缩写,百度了一下才知道是一家公司名,后来才知道这里所说的MIPS是一种体系结构。说实话,计组原学的不是很好,微机原理学的倒还行。但是对RISC的理解和认识也只是停留在考试题目上,还记得背过的题目IntelXXX系列处理器包含应用了RISC流水线及超标量技术。记不得了。
 
说句老实话,Intel的指令集我们也学过,根本记不住,指令格式很复杂。相对而言,MIPS的指令格式很清晰。当然,MIPS的寄存器很多,但是用处却很大。
 
我觉得搞硬件,尤其是数字模块,最重要的就是区分开组合逻辑和时序逻辑。使用Verilog语言,很容易区分不开组合和时序。其实,很多东西写写到了后来就熟悉了。Verilog里的很多东西都很重要。我觉得最重要的一点就是,Verilog不是程序设计语言,而是硬件描述语言。你绝对不能用程序设计的思想去考虑使用这种语言。必须要从数据通路需要器件的角度去考虑怎样利用这种语言,我觉得用“利用”很清楚地描述了Verilog的用途。它只是帮助你去描述你想要的硬件模块,它不是创造一个模块。还有,Verilog不是C。必须要脚踏实地的学习,学而不思则惘,思而不学则怠。
 
最后,我很想仔细地说一下FPGA开发。说实话,FPGA的很多东西我还没有掌握甚至是没有了解,尤其是我只是开发数字模块,关于模拟的东西真的不是很清楚,很后悔以前的模电课没有认真想,希望下阶段可以多学学。我觉得每个人刚刚接触FPGA开发一定会很头疼,真的非常头疼。工具链、原理图、UG等等,资料铺天盖地的席卷而来。我觉得最开始必须要选定好一块开发板的原理图和用户手册,详细阅读,当然这些东西一般都是英文的。还记得最开始我阅读NEXYS3手册几乎耗费了一周的每天晚上的时间,很多名词根本不了解,都需要weiki或者百科。然后是工具链,我觉得磨刀不误砍柴工吗,不要想着着急地在开发板上跑自己写的东西,先跑跑DEMO。熟悉一下工具,这很重要。所有工具的HELP是最好的工具教材,一定切记这点。我几乎阅读了所有Synplify Help中的所有内容,大部分ISE Help里的内容,还有网站上的UG。当然,此时可以了解一下FPGA的特性,什么是slice、LUT、LATCH等等。然后,我的建议是一定要看特权同学的书《深入浅出玩转FPGA》,我真不是打广告。这本书真是一本FPGA开发小白的入手神书,很多东西讲的很清楚很详细,很多小技巧。并且,此时有必要去读别人的代码,去培养自己的代码风格。无论硬件还是软件都要有好的代码风格。
 
仿真、综合、实现、时序约束、板级调试时ISE的通用流程,Quartus与之略有不同,原理很相似。最重要的两个过程我觉得是仿真和综合。仿真一定要好好做,不要怕麻烦和折腾。
 
综合是提供硬件能力的最快阶段,你必须要知道你使用了什么器件,系统给的和你设想的是否一致。综合不是一个一蹴而就的过程,是一个慢慢磨练的过程。然后,需要了解一下IPcore很多东西都需要用IPcore。这里的IP是知识产权的缩写,此时可能会读很多手册,但是这些ug是提高你对时序理解的最好助手。
 
我觉得实现和板级调试是一个重复的过程,不断的重复,发现错误修改代码。这个阶段需要读懂report,需要了解warning等等。
 
其实,只要你多读手册等东西,每个人都可以玩转FPGA。FPGA开发不是一个很难的过程,却是一个很漫长的过程。生活中的很多事情都不难,但却很漫长。坚持到最后,一定可以玩转。
最后,也是我刚刚发现的。其实碰到问题,可以直接在XILINX或Altera用户论坛发英文帖子,会有资深全世界的网友秒回你的,真心好。
 
像记住初恋般记住自己第一天的梦想!!!

【原创】MIPS·Verilog·FPGA的更多相关文章

  1. (原创)用Verilog实现一个参数化的呼吸灯(Verilog,CPLD/FPGA)

    1.Abstract     观察到一个有趣的现象,每当把Apple笔记本合上的时候,那个白色的呼吸灯就会反复地由暗渐明,然后又由明渐暗,乍一看就像Apple笔记本在打盹休息一样,十分可爱!于是突发奇 ...

  2. 【黑金原创教程】 FPGA那些事儿 SignalTap II 调试技巧

    简介工具篇系列的第三本教程,讲述各种与SignalTap II 有关的调试技巧. 目录[黑金原创教程] FPGA那些事儿<工具篇III>:File01 - 上线调试与下线调试[黑金原创教程 ...

  3. 【黑金原创教程】 FPGA那些事儿《概念篇》

    简介一本讲述非软硬片上系统的书,另外还是低级建模的使用手册. 目录[黑金原创教程] FPGA那些事儿<概念篇>:File01 - 结构的玩笑[黑金原创教程] FPGA那些事儿<概念篇 ...

  4. SPI通信实验---verilog(FPGA作为从机,使用可读可写)

    本实验讲究实用性,故设计思想为:主机先向从机发送地址,若是向从机写入数据,则向从机发送数据,若是读取从机数据,则向从机发送时钟,然后在时钟下降沿读取数据即可.cs信号上升沿作为SPI通信的结束信号.r ...

  5. (原创)Verilog三段式状态机

    下面以上图一个简单的FSM说明三段式Verilog状态机范式: `timescale 1ns / 1ps module FSM( clk,rst_n, in1,in2, out1,out2, CS,N ...

  6. 《FPGA那些事儿》原创教程总结

    经过我们黑金工程师多年的不断努力,黑金原创教程已经达到了14部,包括: 第一部:[黑金原创教程]NIOSII那些事儿 http://www.heijin.org/forum.php?mod=viewt ...

  7. intel FPGA CLKn pin 是否能直接进PLL?

    原创 by DeeZeng FPGA的时钟需要从专用的时钟管脚输入,那CLKn 作为Single-End时钟pin时是否能直接进 PLL呢? 通过查看对应FPGA型号的手册,得出以下结论 1. Cyc ...

  8. Intel FPGA 专用时钟引脚是否可以用作普通输入,输出或双向IO使用?

    原创 by DeeZeng FPGA 的 CLK pin 是否可以用作普通输入 ,输出或双向IO 使用?    这些专用Clock input pin 是否可以当作 inout用,需要看FPGA是否支 ...

  9. 【第一季】CH07_FPGA_RunLED创建VIVADO工程实验

    [第一季]CH07_FPGA_RunLED创建VIVADO工程实验 7.1 硬件图片 先来熟悉一下开发板的硬件:LED部分及按钮部分 7.2 硬件原理图 PIN脚定义(讲解以MIZ702讲解,MIZ7 ...

随机推荐

  1. CBQW ---分组表单展示

    工作流审核表单后,将表单信息展示页面中. Rest读取展示 展示方式有2 一.              CBQW内容查询, 通过CBQW内容查询.分别通过设置itemstyle和header xsl ...

  2. C# 刷新当前窗体

    在有多个窗体时,刷新当前激活的窗体 在MainForm.cs中: private void m_reflashtoolStripButton1_Click(object sender, EventAr ...

  3. 用函数的地址调用函数 C++ MFC

    先说一段废话,幸亏我汇编基础(基础 基础 基础)扎实,否则这个问题真的恶心到我了正题  因为有特殊需求, 需要写一个类似于接口的功能,但是因为用到的次数不多再加上C++写接口各种麻烦所以想通过函数的地 ...

  4. 九度OJ 1104 整除问题

    题目地址:http://ac.jobdu.com/problem.php?pid=1104 题目描述: 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除. 输入: 两个整数n(2 ...

  5. Qt-获取主机网络信息之QHostInfo

    Qt中提供了几个用于获取主机网络信息的类,包括QHostInfo.QHostAddress.QNetworkInterface以及QNetworkAddress.在本节中,我将在这里总结QHostIn ...

  6. JS访问Struts 2 ValueStack中的内容

    /* * var myArray = new Array("${vacant[0]}", "${vacant[1]}", "${vacant[2]}& ...

  7. C# DllImport的用法

    大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能 ...

  8. 51nod1057 N的阶乘

    输入N求N的阶乘的准确值.   Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120参考博客:blog.csdn. ...

  9. about家庭智能设备部分硬件模块功能共享【协同工作】solution

    本人设备列表: Onda tablet {Android} wifi Desktop computer {win7.centos7} 外接蓝牙adapter PS interface 键盘.鼠标{与同 ...

  10. Python Socket,How to Create Socket Cilent? - 网络编程实例

    文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...