FPGA 第一個工程 -- LED控制

第一次接觸新東西的時候,不免會磕磕碰碰,不過遇到問題不要着急,慢慢來。緣由總歸是咱們本身引發的,一步步找到問題的根源,而後完全解決它,避免下次再犯。app

 在開始以前先分享一下工具:(Quartus II 9.0、Quartus II 13.0、Quartus II 13.一、Quartus II 15.0、相應版本的器件庫、Modulesim)函數

        

連接:https://pan.baidu.com/s/1RfwdpcfD5gmHJvndAgxh0A
提取碼:0q8x工具

 

 接下來進入正題測試

目標:建立 Quartus II 第一個工程 -- LED控制ui

開發環境:Quartus II 15.0.0.145 64Bitspa

FPGA芯片:EP4CE6E22C8N設計

 

第一步:建立工程,打開Quartus II軟件,選擇 File->New Project Wizard,以下圖:3d

        

 

        

        

下面選擇建立一個空的工程調試

        

 

         

 

         

 

         

 

         

 

 

工程建立完畢,接下來就是添加代碼文件,在菜單欄選擇 File->Newblog

         

 

 

這裏我選擇的是Verilog HDL語言,文件建立完成後,向文件中添加代碼,並保存。注意:保存的時候文件名必須和工程名一致。

咱們都知道在單片機中程序入口函數是main函數,可是Quartus II不同,在Quartus II的工程中必需要有一個頂層設計文件,而且頂層設計文件中的模塊名必須和工程名一致。

頂層設計文件名也必須和工程名一致,而這個頂層設計文件中和工程同名的模塊就是程序入口。

        

 

 

在單片機中要控制LED就必需要指定IO,並初始化IO,在這裏IO不須要咱們去初始化,咱們只要指定就行了。

使用快捷鍵 Ctrl + Shift + N 打開引腳分配窗口,或者菜單欄 Assignments -> Pin Planner 打開引腳分配窗口。

        

 

         

OK啓動編譯。編譯結果:Info (293000): Quartus II Full Compilation was successful. 0 errors, 6 warnings

        

 

 

第一個警告:Warning (15714): Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings report for details

這個警告的意思是IO參數配置不完整,解決方法以下:

        

 

執行編譯,編譯後還有五個警告。

        

 

警告信息以下:

一、Critical Warning (332012): Synopsys Design Constraints File file not found: 'led.sdc'. A Synopsys Design Constraints File is required by the TimeQuest Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design.

二、Critical Warning (332012): Synopsys Design Constraints File file not found: 'led.sdc'. A Synopsys Design Constraints File is required by the TimeQuest Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design.

三、Critical Warning (332148): Timing requirements not met

四、Critical Warning (332148): Timing requirements not met

五、Critical Warning (332148): Timing requirements not met

以上警告信息實際上是一個時鐘約束的問題所致使的,問題解決方法以下:

        

 

         

 

         

        

 

         

 

          

 

         

 關閉窗口,再編譯一次,編譯後發現結果與理想中的不同,警告信息以下:

一、Critical Warning (332168): The following clock transfers have no clock uncertainty assignment. For more accurate results, apply clock uncertainty assignments or use the derive_clock_uncertainty command.

二、 Critical Warning (332169): From led (Rise) to led (Rise) (setup and hold)

警告信息:時鐘傳輸沒有時鐘不肯定性分配。要得到更精確的結果,請應用時鐘不肯定性分配或使用derive_clock_uncertainty命令。解決方法以下:

打開咱們剛保存的 led.sdc 文件,該文件就在工程目錄下,而後添加兩行信息,並將 clk_source 和 clk_destination 改成本身設置的 Clock name(第二步中 Create Clock 窗口中設置的 Clock name,我設置的 Clock name 是 led)。

添加信息以下:

#set_clock_uncertainty -setup -from clk_source -to clk_destination 0.150
set_clock_uncertainty -setup -rise_from led -rise_to led 0.150
set_clock_uncertainty -hold -rise_from led -rise_to led 0.150

        

 保存文件再編譯,編譯結果以下:

 修改後編譯警告沒有了,打開下載窗口下載程序。此時發現能夠識別調試器,可是 Start 按鈕是灰色的,沒法點擊。

致使這個問題的緣由是 Programmer 軟件只會查找工程文件所在路徑,當生成文件和工程文件不在同一路徑下,就會致使這一問題。

 

 解決方法以下:

 

 

 

 

 

 

Quartus II 的第一個工程建立到此就結束了,最後燒寫代碼至開發板運行測試。下載後運行結果正常。

 

 勤能補拙,遇到問題時,不要爲了解決問題而解決問題,要找到問題產生的緣由。

總結一句:不但要知其然,還要知其因此然。

相關文章
相關標籤/搜索