專利名稱:一種基于微控制器的波形產生系統及方法
技術領域:
本發明涉及一種基于微控制器的波形產生系統及方法。
背景技術:
目前,設備常采用嵌入式微控制器作為主控制器。遺憾地是,如果利用微控制器指令執行的直接結果產生特定波形,那么這種波形的實現是不現實的,這主要有以下原因一是CPU需要執行較高優先級的控制任務、異步中斷服務等使CPU指令序列發生變化;另一方面如果CPU在某一時間段,將所有的時間都應用于數字波形產生的指令序列,那么其他一些重要的任務將難以獲得運行,從而影響系統的控制性能。基于以上原因,基于微控制器設計波形產生的硬件電路可以保證波形產生的實時性。然而,目前的設計思路是將取I個波形周期內足夠的數據點數,存儲于存儲器中,然后將其輸出。但該方法沒有考慮許多波形的每個周期內的波形數據具有重復性,總是將每個周期內的數據全部寫入SRAM中,進一步發出控制命令,將SRAM中的波形數據周期性地輸出。
發明內容
本發明的目的是解決現有基于微控制器波形產生系統中因為每個周期波形數據的重復性導致的占用SRAM過大,影響系統的控制性能的問題。本發明為解決上述技術問題提供一種基于微控制器的波形產生系統,該波形產生系統包括微控制器、雙端口 SRAM、時鐘芯片、分頻器、可逆二進制計數器、2位計數器、I位計數器、選擇開關、同相比例放大電路和反相比例放大電路,微控制器分別與雙端口 SRAM、分頻器和可逆二進制計數器相連,時鐘芯片的輸出端與分頻器的輸入端相連,分頻器的輸出端與可逆二進制計數器相連,可逆二進制計數器的輸出端分別與雙端口 SRAM、1位計數器和2位計數器相連,雙端口 SRAM的輸出端與同相比例放大電路和反相比例放大電路的輸入端相連,同相比例放大電路和反相比例放大電路的輸出端與模擬開關相連,I位計數器的輸出端和可逆二進制計數器的控制端相連,2位計數器的輸出端和選擇開關的控制端相連。所述的微控制器和雙端口 SRAM之間還設置有譯碼器、鎖存器和緩沖器,微控制器的地址口和譯碼器輸入端相連,譯碼器輸出端和鎖存器及緩沖器相連,微控制器的數據口與鎖存器和緩沖器相連,譯碼器用以產生片選信號,鎖存器和緩沖器用于擴展微控制器的I/O 口。所述的雙端口 SRAM的輸出端和同相比例放大電路及反相比例放大電路的輸入端之間連有D/A轉換器,該D/A轉換器的輸入端與雙端口 SRAM的輸出端相連,該D/A轉換器的輸出端與同相比例放大電路及反相比例放大電路的輸入端相連。該波形產生系統的工作過程為
微控制器發出分頻控制信號,得到計數器的輸入時鐘,從而確定波形的周期;同時發出分頻器、計數器、SRAM右端口片選信號和讀出信號,以及緩沖器使能信號;分頻器輸出信號作為可逆計數器的時鐘,計數器輸出作為SRAM的右端口地址信號;SRAM的右端口的數據線即輸出了第一個周期的前1/4波形,并經D/A轉換,同相比例放大后輸出;計數器計數結束,發出計數滿輸出信號,經過I位計數器產生改變計數方式信號,將計數器由加I計數改為從最大值減I計數,從而輸出和前1/4波形關于Y軸對稱的波形,并經D/A轉換,同相比例放大后輸出;當計數又結束,則計數器發出計數滿輸出信號,并經過I位計數器產生改變計數方式信號,將計數器由減I計數改為從O開始后加I計數,同時經過2位計數器產生模擬開關控制信號,將D/A轉換的輸出經反相比例放大后輸出;當計數再次結束,則計數器發出計數滿輸出信號,并經過I位計數器產生改變計數方式信號,將計數器由加I計數改為從最大值開始后減I計數,輸出數字波形數據經D/A轉換后,進一步經反相比例放大后輸出,從而得到所需的波形。本發明為解決上述技術問題還提供一種基于微控制器的波形產生方法,該方法的步驟如下
1).根據系統對波形的精度和周期要求,計算出波形每個周期內所需的點數和每一點的幅值,并排除掉每個周期內的重復數據,并選擇合適容量和數據位數的雙端口 SRAM ; 2).根據波形的周期,選擇合適的時鐘電路和分頻電路,產生合適的時鐘信號作為可逆二進制計數器的計數時鐘,其輸出的二進制計數信號作為SRAM的右端口地址線;
3).微控制器通過雙端口SRAM的左端口將波形周期中初始的一段沒有重復的波形數據寫入SRAM中;
4).微控制器發出命令,選中計數器和雙端口SRAM,計數器正向計數,逐個選中雙端口SRAM中的波形數據,并將SRAM中的波形數據輸出,然后數字波形轉換成模擬波形;
5).如果周期內后面的一段波形數據和存儲在SRAM中的波形數據大小關于縱軸對稱,則利用可逆二進制計數器計數完畢信號,并在其開始重新計數之前,將可逆二進制計數器設置為反向計數,然后將存儲在SRAM中的波形數據經數模轉換和正相放大電路后輸出波形;
6).如果周期內后面的一段波形數據和存儲在SRAM中的波形數據大小關于橫軸對稱,則利用可逆二進制計數器計數完畢信號,并在其開始重新計數之前,將放大電路設置為反相放大電路,然后將存儲在SRAM中的波形數據經數模轉換和反相放大電路后輸出;
7).重復執行步驟4至6直至產生出所需波形。本發明的有益效果是本發明根據每個周期內的波形數據具有重復性的特點,計算出波形每個周期內所需的點數和每一點的幅值,并排除掉每個周期內的重復數據,將沒有重復數據的波形數據寫入雙端口 SRAM中,然后利用周期內后面的一段波形數據和存儲在SRAM中的波形數據大小對稱性,將存儲在SRAM中的波形數據經數模轉換和合適的放大電路后輸出。本發明可以提高每個周期內數據個數,從而提高波形精度;或者排除掉重復性數據后,只存儲基本波形數據,可以減少SRAM的大小,減少設計成本。
圖I是本發明實施例中需要產生的波形 圖2是本發明實施例中波形產生系統結構 圖3是本發明實施例中波形產生流程圖。
具體實施例方式下面結合附圖對本發明的具體實施方式
做進一步說明。本發明的一種基于微控制器的波形產生系統的實施例
本發明以產生如圖I所示的波形為例,來詳細介紹產生該波形的系統圖,如圖2所示,該電路包括微控制器、用以產生片選信號的譯碼器、用以擴展I/O 口的緩沖器和鎖存器、用以存儲數字波形數據的雙端口 SRAM、產生基本時鐘的時鐘芯片、用以產生系統所需不同時鐘的分頻器、用以產生SRAM地址的0 5V輸出的8位可逆二進制計數器、用以將數字波形轉換為模擬波形的8位D/A轉換器、用以判斷關于y軸對稱的重復數據產生的I位計數器、用以判斷關于X軸對稱的重復數據產生的2位計數器、用以選擇同相還是反相信號輸出的模擬開關、同相比例放大電路和將信號反相并放大的反相比例放大電路,微控制器的地址口與譯碼器相連,譯碼器的輸出端與3個8位鎖存器和I個8位緩沖器相連,微控制器的數據口與3個8位鎖存器和I個8位緩沖器相連。
該波形產生系統的工作流程如圖3所示,其具體過程如下
步驟I :假定根據實際需要,系統確定波形包含256點,并已計算了每一點的數值,系統選擇了 8位雙端口 SRAM,雙端口 SRAM具有8根地址線;
步驟2 :微控制器通過鎖存器3向雙端口 SRAM的左端口發出地址信號;
步驟3 :微控制器通過鎖存器2向雙端口 SRAM的左端口發出數據信號,該數據代表了數字波形的大小;
步驟4 :微控制器通過鎖存器I向雙端口 SRAM的左端口發出片選信號和寫信號,將數字波形的幅值寫入SRAM ;
步驟5 :重復步驟2、3和4,將波形所有點的幅值寫入雙端口 SRAM ;
步驟6 :通過鎖存器I發出8位可逆計數器、I位計數器、2位計數器的復位信號,將其輸出復位為0 ;
步驟6 :通過鎖存器I同時發出分頻器、計數器、SRAM右端口片選信號、以及8位緩沖器4的使能信號;
步驟8 8位可逆二進制計數器開始從0計數,其輸出作為雙端口 SRAM的右端口 8位地址,從而將SRAM中存儲的8位數字波形數據通過8位緩沖器4輸出,從而產生了 I個波形周期內的前1/4波形。該數字波形經2倍同相比例放大電路輸出;
步驟9 :計數結束,8位可逆二進制計數器產生計數結束信號,使I位計數器和2位計數器開始計數,并且I位計數器輸出信號發生反轉,從而將8位可逆二進制計數器改為減I計數;
步驟10 8位可逆二進制計數器開始從OFF開始作減I計數,其輸出作為雙端口 SRAM的右端口 8位地址,從而將SRAM中存儲的8位數字波形數據通過8位緩沖器4輸出,從而產生了 I個波形周期內的第2個1/4波形。該數字波形經過2倍同相比例放大電路輸出;步驟11 :計數結束,8位可逆二進制計數器產生計數結束信號,使I位計數器和2位計數器開始計數,并且使這兩個計數器的輸出信號發生反轉,從而將8位可逆二進制計數器改為加I計數,使模擬開關選擇2倍反相比例放大電路輸出;
步驟12: 8位可逆二進制計數器開始從0計數,其輸出作為雙端口 SRAM的右端口 8位地址,從而將SRAM中存儲的8位數字波形數據通過8位緩沖器4輸出,從而產生了 I個波形周期內的第3個1/4波形,該數字波形經2倍反相比例放大電路輸出;
步驟13 :計數結束,8位可逆二進制計數器產生計數結束信號,使I位計數器和2位計數器開始計數,并且I位計數器輸出信號發生反轉,從而將8位可逆二進制計數器改為減I計數;
步驟14 8位可逆二進制計數器開始從OFF開始作減I計數,其輸出作為雙端口 SRAM的右端口 8位地址,從而將SRAM中存儲的8位數字波形數據通過8位緩沖器4輸出,從而產生了 I個波形周期內的第2個1/4波形。該數字波形經過2倍反相比例放大電路輸出;步驟15 :重復步驟8、9、10、11、12、13和14,從而輸出所需波形的其余周期。本發明的一種基于微控制器的波形產生方法的實施例 本發明以產生如圖I所示的波形為例,來詳細說明產生該波形的方法,其具體步驟如
下
I.假定根據實際需要,系統確定波形包含256個點,計算出波形每個周期內所需的點數和每一點的幅值,并排除掉每個周期內的重復數據,選擇8位雙端口 SRAM,雙端口 SRAM具有8根地址線。2.根據波形的周期,選擇合適的時鐘電路和分頻電路,產生合適的時鐘信號作為可逆二進制計數器的計數時鐘,其輸出的二進制計數信號作為SRAM的右端口地址線;
3.微控制器向雙端口 SRAM的左端口發出地址信號和數據信號,該數據代表了數字包絡線波形的大小,微控制器通過雙端口 SRAM的左端口將波形周期中初始的一段沒有重復的波形數據寫入SRAM中。4.微控制器發出命令,選中計數器和雙端口 SRAM,計數器正向計數,逐個選中雙端口 SRAM中的波形數據,并將SRAM中的波形數據輸出,然后再數字波形轉換成模擬波形。5.如果周期內后面的一段波形數據和存儲在SRAM中的波形數據大小關于縱軸對稱,則利用可逆二進制計數器計數完畢信號,并在其開始重新計數之前,將可逆二進制計數器設置為反向計數,然后將存儲在SRAM中的波形數據經數模轉換和正相放大電路后輸出波形。6.如果周期內后面的一段波形數據和存儲在SRAM中的波形數據大小關于橫軸對稱,則利用可逆二進制計數器計數完畢信號,并在其開始重新計數之前,將放大電路設置為反相放大電路,然后將存儲在SRAM中的波形數據經數模轉換和反相放大電路后輸出。7.重復執行步驟4至6直至產生出所需波形。本發明根據每個周期內的波形數據具有重復性的特點,計算出波形每個周期內所需的點數和每一點的幅值,并排除掉每個周期內的重復數據,將沒有重復數據的波形數據寫入雙端口 SRAM中,然后利用周期內后面的一段波形數據和存儲在SRAM中的波形數據大小對稱性,將存儲在SRAM中的波形數據經數模轉換和合適的放大電路后輸出。本發明可以提高每個周期內數據個數,從而提高波形精度;或者排除掉重復性數據后,只存儲基本波形數據,可以減少SRAM的大小,減少設計成本。
權利要求
1.一種基于微控制器的波形產生系統,其特征在于該波形產生系統包括微控制器、雙端口 SRAM、時鐘芯片、分頻器、可逆二進制計數器、2位計數器、I位計數器、選擇開關、同相比例放大電路和反相比例放大電路,微控制器分別與雙端口 SRAM、分頻器和可逆二進制計數器相連,時鐘芯片的輸出端與分頻器的輸入端相連,分頻器的輸出端與可逆二進制計數器相連,可逆二進制計數器的輸出端分別與雙端口 SRAM、1位計數器和2位計數器相連,雙端口 SRAM的輸出端與同相比例放大電路和反相比例放大電路的輸入端相連,同相比例放大電路和反相比例放大電路的輸出端與模擬開關相連,I位計數器的輸出端和可逆二進制計數器的控制端相連,2位計數器的輸出端和選擇開關的控制端相連。
2.根據權利要求I所述的基于微控制器的波形產生系統,其特征在于所述的微控制器和雙端口 SRAM之間還設置有譯碼器、鎖存器和緩沖器,微控制器的地址口和譯碼器輸入端相連,譯碼器輸出端和鎖存器及緩沖器相連,微控制器的數據口與鎖存器和緩沖器相連,譯碼器用以產生片選信號,鎖存器和緩沖器用于擴展微控制器的I/O 口。
3.根據權利要求2所述的基于微控制器的波形產生系統,其特征在于所述的雙端口SRAM的輸出端和同相比例放大電路及反相比例放大電路的輸入端之間連有D/A轉換器,該D/A轉換器的輸入端與雙端口 SRAM的輸出端相連,該D/A轉換器的輸出端與同向比例放大電路及反向比例放大電路的輸入端相連。
4.根據權利要求3所述的基于微控制器的波形產生系統,其特征在于該波形產生系統的工作過程為 微控制器發出分頻控制信號,得到計數器的輸入時鐘,從而確定波形的周期;同時發出分頻器、計數器、SRAM右端口片選信號和讀出信號,以及緩沖器使能信號;分頻器輸出信號作為可逆計數器的時鐘,計數器輸出作為SRAM的右端口地址信號;SRAM的右端口的數據線即輸出了第一個周期的前1/4波形,并經D/A轉換,同相比例放大后輸出;計數器計數結束,發出計數滿輸出信號,經過I位計數器產生改變計數方式信號,將計數器由加I計數改為從最大值減I計數,從而輸出和前1/4波形關于Y軸對稱的波形,并經D/A轉換,同相比例放大后輸出;當計數又結束,則計數器發出計數滿輸出信號,并經過I位計數器產生改變計數方式信號,將計數器由減I計數改為從O開始后加I計數,同時經過2位計數器產生模擬開關控制信號,將D/A轉換的輸出經反相比例放大后輸出;當計數再次結束,則計數器發出計數滿輸出信號,并經過I位計數器產生改變計數方式信號,將計數器由加I計數改為從最大值開始后減I計數,輸出數字波形數據經D/A轉換后,進一步經反相比例放大后輸出,從而得到所需的波形。
5.一種基于微控制器的波形產生方法,其特征在于該波形產生方法的步驟如下 1) 根據系統對波形的精度和周期要求,計算出波形每個周期內所需的點數和每一點的幅值,并排除掉每個周期內的重復數據,并選擇合適容量和數據位數的雙端口 SRAM ; 2).根據波形的周期,選擇合適的時鐘電路和分頻電路,產生合適的時鐘信號作為可逆二進制計數器的計數時鐘,其輸出的二進制計數信號作為SRAM的右端口地址線; 3).微控制器通過雙端口SRAM的左端口將波形周期中初始的一段沒有重復的波形數據寫入SRAM中; 4).微控制器發出命令,選中計數器和雙端口SRAM,計數器正向計數,逐個選中雙端口SRAM中的波形數據,并將SRAM中的波形數據輸出,然后數字波形轉換成模擬波形;5).如果周期內后面的一段波形數據和存儲在SRAM中的波形數據大小關于縱軸對稱,則利用可逆二進制計數器計數完畢信號,并在其開始重新計數之前,將可逆二進制計數器設置為反向計數,然后將存儲在SRAM中的波形數據經數模轉換和正相放大電路后輸出波形; 6).如果周期內后面的一段波形數據和存儲在SRAM中的波形數據大小關于橫軸對稱,則利用可逆二進制計數器計數完畢信號,并在其開始重新計數之前,將放大電路設置為反 相放大電路,然后將存儲在SRAM中的波形數據經數模轉換和反相放大電路后輸出; 7).重復執行步驟4至6直至產生出所需波形。
全文摘要
本發明涉及一種基于微控制器的波形產生系統及方法,本發明通過利用微控制器、雙端口SRAM和可逆二進制計數器,首先將波形周期中初始的一段沒有重復的波形數據寫入SRAM中,然后利用周期內后面的一段波形數據和存儲在SRAM中波形數據大小的對稱性,并使用可逆二進制計數器計數完畢信號,使其在開始重新計數之前,選擇計數方式和放大電路形式,然后計數器工作并將存儲在SRAM中的波形數據經數模轉換和合適的放大電路后輸出。本發明可以提高每個周期內數據個數,從而提高波形精度,排除掉重復性數據后,只存儲基本波形數據,可以減少SRAM的大小,降低設計成本。
文檔編號H03K3/02GK102684648SQ20121000589
公開日2012年9月19日 申請日期2012年1月10日 優先權日2012年1月10日
發明者葉宇程, 張海濤, 張聚偉, 梁云朋, 白舸 申請人:河南科技大學