时至今日,终于将全部的计划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. 40个Java集合面试问题和答案【上】【转载】

    1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1 ...

  2. 轮子来袭 vJine.Core Orm 之 04_使用进阶

    1.配置文件: 框架默认情况下支持"connectionStrings"的配置方式,如<轮子来袭 vJine.Core Orm 之 01_快速入门>所述: 框架的进阶设 ...

  3. OI中神奇的神器fillchar

    传说,Pascal中有一个函数——fillchar.这是高手们装*用的利器,也是大家的神器(大家好才是真的好). 神器介绍: 百度百科说:“Fillchar是Turbo/Borland Pascal的 ...

  4. 02两栈共享空间_DoubleStack--(栈与队列)

    #include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...

  5. MVC——分页控件

    不管是什么类型的网站,分页都是必不可少的功能实现.在这里记录一下我自己接触过的分页控件: 一. MvcPager控件(记得项目里添加MvcPager.dll的引用) 这里面比较常用的就 ——@Html ...

  6. free -m

    free -m total used free shared buffers cached Mem: 7760 1572   6187          0              9       ...

  7. WPF异步调用WCF服务

    wpf调用wcf时,第一次访问总耗时到达几秒,影响界面的用户体验,因此在wpf加载界面和加载数据时采用异步加载,即异步访问wcf服务, 由于是否采用异步加载和服务端无关,仅仅由客户端自己根据需要来选择 ...

  8. Nginx+Keepalived主备负载均衡

    实验环境及软件版本: CentOS版本:    6.6(2.6.32.-504.el6.x86_64) nginx版本:     nginx-1.6.2 keepalived版本:keepalived ...

  9. hdu 2079 选课时间

    hdu 2079 选课时间 题意:选的学分总和为n,并且学分为a的课有b种,总共有K(1<=k<=8)种学分不同的课,并且要选的学分最多为40:问选课方案有多少种?(学分相同的课即认为相同 ...

  10. [C和指针] rearrange.c

    C和指针_程序1.1_重排字符 /* ** 这个程序从标准输入(键盘)中读取输入行并按需求处理后在标准输出(屏幕)中打印, ** 每个输入行的后面一行是该行按需求处理后的输出内容. ** ** 输入的 ...