通過了解早期FPGA的發展,理解FPGA究竟是干什么的,FPGA到底在電子設計領域起到了什么樣的作用,下面是一張早期的設計過程
早期的設計流程過程中,只有當硬件完成了才能夠得到功能的驗證,隨着集成電路開發的規模來越大,漸漸的需要一種快速有效的開發平台來完成預期的功能設計的驗證,減少研發周期及研發成本,由此引入了EDA技術,首先是使用一種語言系統來描述一個硬件模型(即VHDL),其語言着重在描述性上,即重點在建立電路模型的過程上
此處就應該知道電路模型應該具備全部的電路特征:
(1)必要的輸入和輸出
(2)必要的內部信號
(3)特定的邏輯和時序行為等
這里就是FPGA開發語言與C語言之間本質性的差距(C語言是過程描述語言)。
在完成需要與想法后,即完成EDA設計后的一些應用方面如下圖
用HDL描述的抽象硬件模型,verilog里面稱為Module。
FPGA的verilog設計中,用到是查找表的方式來完成的對任意的組合邏輯的實現。在FPGA內部包含許多單元LUT(查找表),IOE(輸入輸出單元),Memory(內存)和DSP(乘法器等硬件電路主城)等構成。
EDA工具如何將我們的語言轉化為FPGA可應用的硬件電路。
編譯:將HDL 模型轉變為基本的門級網表。
映射:為這些基本的門模型分配具體的cell。
映射后的網表即可以直接燒錄到FPGA的器件里面。
硬件模型代碼編寫好后,需要對抽象的電路模型進行測試,稱之為驗證,為了進行驗證,需要單獨編寫一段HDL代碼,建立一個用於測試的模型,此模型稱為Testbench
由於Testbench是一個真實的仿真平台,所以其本身也是不能運行的,EDA軟件會提供一種運行Testbench的方法,這種抽象的方法稱之為仿真。
仿真又分為
綜合前驗證(加載的為RTL模型),主要驗證測試模型的邏輯性能。
綜合后驗證(加載的為網表),主要驗證的是設計模型的時序性能。
Quartus II主要用來做設計編譯及時序分析,仿真則需要用到ModelSim來進行驗證。
(感覺和單片機的KEIL和protues的關系很像。
EDA的仿真工具ModelSim
技術報告大多數是modelsim做的驗證,有論文需求和技術文檔需求的小伙伴門可以看下,有開發板的貌似可以直接燒錄了,不過還是仿真后可以看的更清晰)
由於仿真過程中需要的調用很多跨平台的文件,Altera提出了一鍵跨平台的自動化方式,稱為NativeLink(使用時要注意層次化設計),這在后面的文章中會詳細的講解到
FPGA的邏輯單元
可編程寄存器是帶沿觸發的,由此可以構成時序邏輯。
提供路由器可以跟不同的邏輯單元進行來連接。
異步清零邏輯是為了在異步時序邏輯中提供異步清零的邏輯。
因為邏輯單元里面可能會有多個時鍾對邏輯單元進行處理,所以需要有個時鍾的管理。
查找表原理:任意組合邏輯的乘積項SOP對應n輸入多路器實現。
這篇文章旨在講述FPGA的作用及FPGA的一個基本的開發流程,如何將理論和實際結合起來,最后希望通過這篇文章讓大家了解為什么verilog HDL語言和C語言(面向過程)以及JAVA(面向對象)、python(面向邏輯)等語言有本質的不同,因為它是一個並不是一個面向開發過程的語言,它只是一個描述性語言,開發邏輯及開發過程需要通過數電及微機接口的知識來完成,它的作用僅僅是將期望的邏輯用人和FPGA都能夠理解的方式表達出來,然后傳遞到FPGA中讓他按照人的意願來實現相應功能的一門語言。