【就業班學員心得】優化溫度檢測工程架構的心得

【就業班學員心得】優化溫度檢測工程架構的心得

本文爲明德揚原創文章,轉載請註明出處!

本項目是基於FPGA設計的溫度檢測工程:

該項目主要實現的功能是對溫度傳感器DS18B20的溫度值進行讀取,並且將讀取到的溫度值數據在數碼管上和PC上顯示出來。

一、硬件與架構設計

本項目中用到的設備有:PC、FPGA、溫度傳感器DS18B20、蜂鳴器(beep)、數碼管(segment)。

對於本次的項目,我的任務是將之前的溫度檢測項目的架構再進行細分,以及將相應的代碼寫出來並且能夠上板調試出來。

之前的溫度檢測項目的架構主要分了九個模塊:

分別是uart_rx模塊、ascii_hex模塊、opcode模塊、control模塊、byte模塊、bit模塊、seg_disp模塊、hex_ascii模塊、uart_tx模塊,具體的架構圖如圖1所示:在這裏插入圖片描述
在上面溫度檢測架構(圖1)的基礎上,我將架構再進行了細分,分成了11個模塊:

分別是uart_rx模塊、ascii_hex模塊、opcode模塊、control模塊、byte模塊、溫度比較模塊、溫度計算轉換模塊、bit模塊、seg_disp模塊、hex_ascii模塊、符號補全模塊、uart_tx模塊,具體的架構圖如圖2所示:

在這裏插入圖片描述
該項目架構細分前後的主要區別主要是:

將細分之前的control模塊分解成了control模塊、溫度比較模塊、溫度計算比較轉換模塊、符號補全模塊、以及將opcode模塊的輸出設置爲地址指令和數據指令一起輸出。

二、架構細分後的優點

我個人認爲有以下幾個優點:

1.讓每一個模塊的功能更加清晰,看起來比較直觀(讓剛接觸到該項目的新手,能夠比較短時間內瞭解各個模塊的功能);

2.讓思路更加清晰,方便寫相應地代碼,減少因代碼過多而導致容易發生錯誤的問題(細分前的control模塊代碼多,功能多,使得看或者寫代碼時有一定的難度);

3.方便對每一個模塊進行相應地測試(方便寫測試文件)。

三、產生問題及解決方案

在細分該項目的過程中,我所遇到的問題有以下三點:

1.對各個細分模塊的輸入和輸出信號定義不太清晰(不知道該設置多少個輸入和輸出信號);

2.對模塊之前的閒忙信號定義比較模糊(不太清楚哪些模塊之間需要定義閒忙信號);

3.上板調試時,數碼管上能夠正常顯示讀取到的溫度值,而pc上卻出現了亂碼(沒有顯示讀取到的溫度值);

對於以上提到的三個問題,在潘老師的指導下我分別做了如下的處理:

1.對於第一個問題、我先將能夠想到的輸入或者輸出信號先定義好(多除少補),再結合細分架構之前對應的輸入和輸出進行定義;

2.對於第二個問題、我先考慮各個模塊之間的信號處理時間,看看哪些模塊之間需要用到閒忙信號,最後再結合細分架構之前各個模塊之前的閒忙信號設置;

3.對於第三個問題、我使用signaltap從uart_tx模塊、符號補全模塊、hex_ascii模塊、溫度計算比較轉換模塊依次進行查找問題,最後查找出是某一個輸出信號的位寬定義的問題。

總的來說,通過對本次溫度檢測項目架構細分,讓我對該項目更加的瞭解了,以及在一定程度上擴展我的設計思路,同時也讓我對signaltap的使用更加熟悉了(用signaltap找bug確實是一種很好的方法,有興趣的同學可以學習明德揚實用調試技巧課),還有就是也讓我體驗到了很大的成就感。

以上就是本人優化溫度檢測工程架構的心得筆記,感興趣的朋友可以在留言中與我進行交流討論!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章