久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3928|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于FPGA的洗衣機(jī)控制器設(shè)計(jì) VHDL程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:816987 發(fā)表于 2020-11-30 08:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

設(shè)計(jì)環(huán)境語言

2.1.1 Max+plusII
如圖2.1所示,MAX+PLUS II是Altera公司的全集成化可編程邏輯設(shè)計(jì)環(huán)境。MAX+plus II 界面友好,使用便捷,被譽(yù)為業(yè)界最易用易學(xué)的EDA軟件。MAX+plus II支持原理圖、VHDL和Verilog語言文本文件,以及波形與EDIF等格式的文件作為設(shè)計(jì)輸入,并支持這些文件的任意混合設(shè)計(jì)。MAX+plusII具有門級(jí)仿真器,可以進(jìn)行功能仿真和時(shí)序仿真,能夠產(chǎn)生精確的仿真結(jié)果。在適配之后,MAX+plusII生成供時(shí)序仿真用的EDIF、VHDL和Verilog三種不同格式的網(wǎng)表文件。
MAX+plusII支持主流的第三方EDA工具,如Synopsys、Cadence、Synplicity、Mentor、Viewlogic、Exemplar和Model Technology等。MAX+plusII支持除APEX20K系列之外的所有Altera FPGA/CPLD大規(guī)模邏輯器件。
MAX+plusII的HDL文本編輯器是很有彈性的工具,提供多種硬件描述語言的文字編輯與合成的環(huán)境。其中包括有:
1.Altera Hardware Description Language (AHDL)
2.Very High Integrated Circuit Hardware Description Language (VHDL)
3.Verilog Hardware Description Language (Verilig HDL)
以AHDL語法編寫的文件格式為*.tdf,以VHDL語法編寫的文件格式則為*.vhd,而以Verilog HDL語法編寫的文件格式則為*.v。可以設(shè)計(jì)程序創(chuàng)建一個(gè)符號(hào)文件供圖形編輯器使用。

圖2.1


2.1.2 VHDL
VHDL 的英文全名是VHSIC Hardware Description Language(VHSIC硬件描述語言)。VHSIC是Very High Speed Integrated Circuit的縮寫,是20世紀(jì)80年代在美國國防部的資助下始創(chuàng)的,并最終導(dǎo)致了VHDL語言的出現(xiàn)。1987年底,VHDL被 IEEE 和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。
描述 在這個(gè)語言首次開發(fā)出來時(shí),其目標(biāo)僅是一個(gè)使電路文本化的一種標(biāo)準(zhǔn),為了使人們采用文本方式描述的設(shè)計(jì)能夠被其他人沒有二意性地所理解。因?yàn)橛米匀徽Z言描述電路會(huì)產(chǎn)生二意性。 這個(gè)模型是讓人來閱讀的。 模擬的模型 作為模型語言,用于采用模擬軟件進(jìn)行模擬。這個(gè)模型是讓仿真軟件來閱讀的。 綜合的模型 在自動(dòng)設(shè)計(jì)系統(tǒng)中,作為設(shè)計(jì)輸入。這個(gè)模型是讓綜合軟件來閱讀的。
VHDL 語言能夠成為標(biāo)準(zhǔn)化的硬件描述語言并獲得廣泛應(yīng)用,它自身必然具有很多其他硬件描述語言所不具備的優(yōu)點(diǎn)。歸納起來,VHDL語言主要具有以下優(yōu)點(diǎn):
(1)VHDL 語言功能強(qiáng)大,設(shè)計(jì)方式多樣
(2)VHDL 語言具有強(qiáng)大的硬件描述能力
(3)VHDL 語言具有很強(qiáng)的移植能力
(4)VHDL 語言的設(shè)計(jì)描述與器件無關(guān)
(5)VHDL 語言程序易于共享和復(fù)用
2.2 設(shè)計(jì)要求
1、設(shè)計(jì)一個(gè)電子定時(shí)器,控制洗衣機(jī)作如下運(yùn)轉(zhuǎn):定時(shí)啟動(dòng)?正轉(zhuǎn)?暫停?反轉(zhuǎn)?暫停?定時(shí)未到回到“正轉(zhuǎn)?暫停?……”,定時(shí)到則停止;
2、用兩個(gè)數(shù)碼管顯示洗滌的預(yù)置時(shí)間(分鐘數(shù)),按倒計(jì)時(shí)方式對(duì)洗滌過程作計(jì)時(shí)顯示,直到時(shí)間到停機(jī);洗滌過程由“開始”信號(hào)開始;
3、三只LED燈表示“正轉(zhuǎn)”、“反轉(zhuǎn)”、“暫停”三個(gè)狀態(tài)。
2.3 設(shè)計(jì)流程

3 設(shè)計(jì)程序
3.1減數(shù)計(jì)時(shí)模塊
由于洗衣機(jī)有工作時(shí)間,必須要一模塊來控制它的工作時(shí)間范圍,當(dāng)洗衣機(jī)開
始工作后,減法計(jì)數(shù)器即會(huì)實(shí)現(xiàn)減數(shù)功能,直到時(shí)間減到零,洗衣機(jī)便停止工作。
(1)程序
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.std_logic_unsigned.all;
  4. entity count is
  5.   port(clk,tla,start,enter:in std_logic;  
  6. ini:in std_logic_vector(7 downto 0);

  7. show:out std_logic_vector(7 downto 0);
  8.        finish:out std_logic);
  9. end count;
  10. architecture one of count is
  11. signal fini:std_logic;
  12. signal show1:std_logic_vector(7 downto 0);
  13. begin
  14.   process(tla,clk,start)
  15.    variable num:std_logic_vector(7 downto 0);
  16.   begin
  17.    if enter='1' then num:=ini;
  18.    elsif(tla'event and tla='1')then
  19.      if start='1'and num/=0 then
  20.      num:=num-1;
  21.      end if;
  22.    end if;
  23.    if enter='0'and num=0 then
  24.    fini<='1';num:="00000000";
  25.    else fini<='0';
  26.    show1<=num;
  27.    end if;
  28.   end process;
  29.   process(clk)
  30.   begin
  31.    if  clk'event and clk='1'then finish<=fini;
  32.    show<=show1;
  33.    end if;
  34.   end process;
  35. end;
復(fù)制代碼
(2)仿真波形
減數(shù)計(jì)時(shí)模塊仿真如圖3.1所示,start為電源開關(guān),enter反應(yīng)時(shí)間設(shè)置情況,當(dāng)洗衣機(jī)開始工作,時(shí)由脈沖信號(hào)tla進(jìn)行控制完成倒計(jì)時(shí),并通過show進(jìn)行顯示。

圖3.1

3.2 預(yù)置時(shí)間模塊設(shè)計(jì)與仿真
此模塊由一個(gè)累加器和一個(gè)命令控制器組成,用來實(shí)現(xiàn)預(yù)置時(shí)間的功能,洗滌時(shí)間數(shù)以分鐘為單位,用戶可以根據(jù)自己的需求來設(shè)置洗滌時(shí)間的長短。

  • 累加器程序
通過累加預(yù)置具體洗衣時(shí)間。
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.std_logic_unsigned.all;
  4. entity adder is
  5. port(in1:in std_logic;
  6.       q:out std_logic_vector(2 downto 0));
  7. end adder;
  8. architecture one of adder is
  9. signal add:std_logic_vector(2 downto 0);
  10. begin
  11. q<=add;
  12.   process(in1)
  13. begin
  14. if in1'event and in1='1' then
  15. add<=add+1;
  16. end if;
  17. end process;
  18. end;
復(fù)制代碼
累加器模塊仿真波形如圖3.2.1所示,通過累加的方式完成時(shí)間設(shè)置。

圖3.2.1


  • 命令控制器程序
將輸入的三位二進(jìn)制時(shí)間信號(hào)編碼成十進(jìn)制數(shù)輸出到減法計(jì)數(shù)器電路。
  1. LIBRARY IEEE;
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.STD_LOGIC_UNSIGNED.ALL;
  4. ENTITY ORDER IS
  5.     PORT(CLK:IN STD_LOGIC;     
  6.        ORDER:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
  7.         TIME:OUT INTEGER RANGE 128 DOWNTO 0);
  8. END ORDER;
  9. ARCHITECTURE ONE OF ORDER IS
  10. BEGIN
  11.       PROCESS(CLK)
  12.       BEGIN
  13.       CASE ORDER IS
  14.       WHEN "000" =>TIME<=1;
  15.       WHEN "001" =>TIME<=2;
  16.       WHEN "010" =>TIME<=3;
  17.       WHEN "011" =>TIME<=4;
  18.       WHEN "100" =>TIME<=5;
  19.       WHEN "101" =>TIME<=6;
  20.       WHEN "110" =>TIME<=7;
  21.       WHEN "111" =>TIME<=8;
  22.       WHEN OTHERS =>TIME<=0;
  23.       END CASE;
  24. END PROCESS;
  25. END;
復(fù)制代碼
命令控制器模塊仿真波形如圖3.2.2所示,將輸入的二進(jìn)制信號(hào)轉(zhuǎn)化為十進(jìn)制信號(hào)。

圖3.2.2


3.3數(shù)碼管顯示模塊:
根據(jù)設(shè)計(jì)要求,必須將洗衣機(jī)的工作狀態(tài)及工作時(shí)間在數(shù)碼管和指示燈上顯示出來,此模塊是用來控制洗衣機(jī)的工作狀態(tài)及工作的頻率,并把工作狀態(tài)及工作時(shí)間顯示出來。a,b,c,d,e,f,g分別對(duì)應(yīng)數(shù)碼管的七段,minute和second分別位選兩個(gè)數(shù)碼管,顯示十位和個(gè)位。
  • 程序
  1. LIBRARY IEEE;
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.STD_LOGIC_UNSIGNED.ALL;
  4. ENTITY SHOWTIME IS
  5. PORT (TIME_REMAIN:IN STD_LOGIC_VECTOR (7 DOWNTO 0);
  6.               CLK:IN STD_LOGIC;
  7.     MINUTE,SECOND:OUT STD_LOGIC;
  8.     A,B,C,D,E,F,G:OUT STD_LOGIC);
  9. END SHOWTIME;
  10. ARCHITECTURE ONE OF SHOWTIME IS
  11. SIGNAL TEMP:STD_LOGIC_VECTOR(6 DOWNTO 0);
  12. SIGNAL BCD:STD_LOGIC_VECTOR(3 DOWNTO 0);
  13. SIGNAL CHOOSE:STD_LOGIC;
  14. BEGIN
  15. PROCESS (CLK)
  16. BEGIN
  17.     IF(CLK'EVENT AND CLK='1')THEN
  18.          CHOOSE<=NOT CHOOSE;
  19.           IF(CHOOSE='1')THEN
  20.           MINUTE<='0';SECOND<='1';
  21.           BCD<=TIME_REMAIN(7 DOWNTO 4);
  22.           ELSE
  23.           MINUTE<='1';SECOND<='0';
  24.           BCD<=TIME_REMAIN(3 DOWNTO 0);
  25.           END IF;
  26.     END IF;
  27.   END PROCESS;
  28.     PROCESS(BCD)
  29.     BEGIN
  30.      CASE BCD IS
  31.      WHEN "0000" =>TEMP<="1111110";--0
  32.      WHEN "0001" =>TEMP<="0110000";--1
  33.      WHEN "0010" =>TEMP<="1101101";--2
  34.      WHEN "0011" =>TEMP<="1111001";--3
  35.      WHEN "0100" =>TEMP<="0110011";--4
  36.      WHEN "0101" =>TEMP<="1011011";--5
  37.      WHEN "0110" =>TEMP<="1011111";--6
  38.      WHEN "0111" =>TEMP<="0001111";--7
  39.      WHEN "1000" =>TEMP<="1111111";--8
  40.      WHEN "1001" =>TEMP<="1111011";--9
  41.      WHEN others =>TEMP<="0000000";
  42.      END CASE;
  43.      A<=TEMP(6);B<=TEMP(5);C<=TEMP(4);D<=TEMP(3);E<=TEMP(2);F<=TEMP(1);G<=TEMP(0);
  44.    END PROCESS;
  45. END;
復(fù)制代碼
  • 仿真波形
數(shù)碼顯示模塊如圖3.3所示,通過數(shù)碼管MINUTE和SECOND顯示十位和個(gè)位的數(shù)。

圖3.3


3.4狀態(tài)機(jī)模塊:
接收電機(jī)運(yùn)行狀態(tài)信號(hào),譯碼后實(shí)時(shí)控制電機(jī)的正傳、反轉(zhuǎn)和暫停。
  • 程序
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. entity move is
  4. port(out_1,out_2:in std_logic;
  5. REV,RUN,PAUSE:buffer std_logic);
  6. end move;
  7. architecture move of move is
  8. signal choose:std_logic_vector(1 downto 0);
  9. begin
  10. choose(1)<=out_1;
  11. choose(0)<=out_2;
  12. process(choose)
  13. begin
  14. case choose is
  15. when "00"=>REV<='0';RUN<='0';PAUSE<='1';
  16. when "10"=>REV<='0';RUN<='1';PAUSE<='0';
  17. when "01"=>REV<='1';RUN<='0';PAUSE<='0';
  18. when others=>REV<='0';RUN<='0';PAUSE<='0';
  19. end case;
  20. REV<=out_2;RUN<=out_1;PAUSE<=not(out_1 or out_2);
  21. end process;
  22. end move;
復(fù)制代碼

  • 仿真波形
狀態(tài)機(jī)模塊如圖3.4所示,接受電機(jī)狀態(tài)信號(hào),完成電機(jī)正轉(zhuǎn)RUN、反轉(zhuǎn)REV和暫停PAUSE的控制

圖3.4

采用的是模塊化層次化的設(shè)計(jì)方法,通過這樣分模塊化的思考方式,設(shè)計(jì)顯得相對(duì)容易了很多,思路也相對(duì)簡(jiǎn)單了很多。洗衣機(jī)控制器主要有三個(gè)狀態(tài),要實(shí)現(xiàn)幾種狀態(tài)的多次循環(huán)改變,預(yù)置時(shí)間,還有計(jì)時(shí)和數(shù)碼管動(dòng)態(tài)顯示的功能。因此電路可主要分為以下幾個(gè)模塊:預(yù)置時(shí)間和減法計(jì)數(shù)器模塊、數(shù)碼管動(dòng)態(tài)顯示模塊、狀態(tài)控制模塊。通過每個(gè)模塊的設(shè)計(jì),最后運(yùn)用VHDL語言的進(jìn)程語句進(jìn)行模塊間的組合,從而完成程序的設(shè)計(jì)。
通過這次設(shè)計(jì),我對(duì)VHDL語言有了基本的掌握,對(duì)其設(shè)計(jì)方法也有了一些技巧性的了解,為將來的硬件設(shè)計(jì)打下了一定的基礎(chǔ)。對(duì)于FPGA編程、定時(shí)器和計(jì)數(shù)器的設(shè)計(jì)都熟悉起來了,加深了對(duì)時(shí)序組合電路印象。同時(shí)學(xué)會(huì)了自頂向下的數(shù)字系統(tǒng)設(shè)計(jì)思路,在設(shè)計(jì)一個(gè)系統(tǒng)時(shí),首先要對(duì)一個(gè)系統(tǒng)的功能做充分的了解,然后模塊劃分也應(yīng)該進(jìn)行合理的安排,模塊與模塊之間又應(yīng)該如何連接,同時(shí)應(yīng)該適當(dāng)考慮電路實(shí)驗(yàn)問題。
通過洗衣機(jī)設(shè)計(jì),還可以使我們對(duì)于FPGA的工作原理,有了較之前更清楚明白的理解。FPGA可以應(yīng)用到許多方面,通過搭載不同的內(nèi)核,可以應(yīng)用到不同系統(tǒng)中,完成多種任務(wù)設(shè)計(jì)。由此可見,對(duì)于相關(guān)專業(yè)的學(xué)習(xí)與工作來說,學(xué)好FPGA,學(xué)會(huì)運(yùn)用它豐富的功能,是十分有必要的。在學(xué)習(xí)一門技術(shù)之前我們往往從它的編程語言開始,如同學(xué)習(xí)單片機(jī)一樣,我們從c語言開始入門,當(dāng)掌握了c語言之后,開發(fā)單片機(jī)應(yīng)用程序也就不是什么難事了。學(xué)習(xí)fpga也是如此,fpga的編程語言有兩種:vhdl和verilog,這兩種語言都適合用于fpga的編程。
總的來講,在對(duì)FPGA的設(shè)計(jì)中,讓我對(duì)于可編程邏輯器件的相關(guān)理論有了更深刻的理解與掌握,且鍛煉了自己熟悉新軟件能力,并且對(duì)VHDL語言有了一定的了解,對(duì)程序的設(shè)計(jì)有了直觀的體驗(yàn),從而得到許多收獲。


以上的Word格式文檔51黑下載地址:
洗衣機(jī)控制器.doc (199.28 KB, 下載次數(shù): 30)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:943023 發(fā)表于 2021-11-27 12:06 | 只看該作者
請(qǐng)問樓主這五個(gè)模塊該怎么用EDA連在一起
回復(fù)

使用道具 舉報(bào)

板凳
ID:1059369 發(fā)表于 2022-12-27 16:49 | 只看該作者
學(xué)習(xí)洗衣機(jī)控制器
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美一区二区三区 | 亚洲国产精品91 | 一级黄色绿像片 | 久在线视频播放免费视频 | 亚洲精品电影在线观看 | 国产精品一级 | 亚洲一区视频在线 | 精品国产欧美在线 | 九一在线观看 | 日韩在线免费播放 | 在线视频一区二区 | 免费在线看黄视频 | 午夜精品在线观看 | 欧美午夜精品 | 国产精品久久久久久妇女 | 国产午夜精品一区二区三区嫩草 | 亚洲精品美女 | 一区二区三区在线免费看 | 在线观看成人小视频 | 成人av网站在线观看 | 欧美伊人| 国产成人午夜电影网 | 欧美日韩高清在线观看 | 97超碰站 | 国产精品九九九 | 毛片网在线观看 | 欧美精品一区三区 | 成年人在线视频 | 久热精品在线 | 在线成人www免费观看视频 | 国产成人精品一区二区三区网站观看 | 中文字幕乱码视频32 | 国产东北一级毛片 | 欧美不卡| 国产激情在线观看 | 午夜视频一区二区 | 日韩精品无码一区二区三区 | 国产精品一区二区av | 久久精品一 | 免费国产一区二区视频 | 午夜成人免费视频 |