發布日期:2022-07-24 點擊率:106
本文為大家介紹電子計時器的VHDL設計方法。
設計一個電子計時器,給定時鐘信號為512HZ,要求系統達到以下功能:
(1)用6個數碼管分別顯示時、分、秒,計時范圍為00:00:00~23:59:59。
(2)計時精度是1s。
(3)具有啟/ 停開關, 復位開關。
總體方框圖
本系統由六十進制計數器模塊、二十四進制計數器模塊、分頻模塊執行計時功能, 輸入信號是512Hz,通過分頻后為1Hz,時鐘信號是1Hz作為計時器的秒輸入,秒為60進制計數器,分也為60進制計數器,小時采用二十四進制計數器, 各級進位作為高位的使能控制。
設計一個八位的六十進制計數器模塊,輸入信號為en、reset、clk,分別為使能、復位和時鐘信號,輸出信號為qa[3„0]、qb[3„0]、rco,分別為低4位輸出、高4位輸出和進位位。
六十進制計數器
秒計數器的仿真波形圖
利用60進制計數器完成00到59的循環計數功能,當秒計數至59時,再來一個時鐘脈沖則產生進位輸出,即enmin=1;reset作為復位信號低電平有效,即高電平時正常循環計數,低電平清零。因為這種60進制的VHDL語言是很好寫的,它并不復雜,再說我們必須要學會這些基本的硬件語言的描寫。
分鐘計數器的仿真波形圖
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY count60 IS
PORT( en,Reset,clk: in STD_LOGIC;
qa: out STD_LOGIC_VECTOR(3 DOWNTO 0);
qb: out STD_LOGIC_VECTOR(3 DOWNTO 0);
rco: OUT STD_LOGIC); END count60;
ARCHITECTURE a OF count60 IS
BEGIN
process(clk)
variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0);
variable tmb: STD_LOGIC_VECTOR(3 DOWNTO 0); begin
If Reset =‘0’then tma:=“0000”;
tmb:=“0000”;
elsif clk‘event and clk=’1‘ then
if en=’1‘ then
rco<=tmb(2)and tmb(0)and tma(3)and tma(0);
if tma=“1001” then
tma:=“0000”;
if tmb=“0101” then
tmb:=“0000”;
else tmb:=tmb+1;
end if;
else tma:=tma+1;
end if;
end if;
end if;
qa<=tma;qb<=tmb; end process; END a;
設計一個八位的二十四進制計數器模塊,輸入信號為en、reset、clk,分別為使能、復位和時鐘信號,輸出信號為qa[3„0]、qb[3„0],分別為低4位輸出、高4位輸出。
二十四進制計數器示意圖
小時計數器的仿真波形圖
小時計數模塊利用24進制計數器,通過分鐘的進位信號的輸入可實現從00到23的循環計數。
該模塊部分VHDL 源程序如下:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY count24 IS
PORT( en,Reset,clk: in STD_LOGIC;
qa: out STD_LOGIC_VECTOR(3 DOWNTO 0);
qb: out STD_LOGIC_VECTOR(3 DOWNTO 0));
END count24;
ARCHITECTURE a1 OF count24 IS
BEGIN
process(clk)
variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0);
variable tmb: STD_LOGIC_VECTOR(3 DOWNTO 0);
begin
If Reset = ‘0’then tma:=“0000”;
tmb:=“0000”; else
if clk‘event and clk=’1‘ then
if en=’1‘ then
if tma=“1001” then
tma:=“0000”;
tmb:=tmb+1;
elsif tmb=“0010” and tma=“0011” then
tma:=“0000”;
tmb:=“0000”;
else tma:=tma+1;
end if;
end if;
end if;
end if;
qa<=tma;
qb<=tmb;
end process;
END a1;
設計一個分頻器,要求將輸入512HZ的時鐘信號分頻為1HZ的時鐘信號作為計時器的秒輸入。輸入信號為clk和rst,分別為時鐘信號和復位信號,輸出信號為clk_out,為分頻器1HZ的時鐘信號輸出。
分頻器示意圖
該模塊部分VHDL 源程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY fenpinqi IS
PORT (CLK,RST:in std_logic;
CLK_OUT:out std_logic);
END fenpinqi;
ARCHITECTURE behav OF fenpinqi IS
signal clk_data:std_logic;
SIGNAL CNT6 :
INTEGER := 0;
BEGIN
PROCESS(CLK)
BEGIN
IF RST = ‘0’ THEN CNT6<=0
ELSIF CLK‘EVENT AND CLK=’1‘ THEN
IF CNT6=255 THEN
clk_data<=NOT clk_data;
CNT6<=0;
ELSE CNT6<=CNT6+1;
END IF;
END IF;
CLK_OUT<=clk_data;
END PROCESS;
END behav;
LED有著顯示亮度高,響應速度快的特點,最常用的是七段式LED顯示器,又稱數碼管。七段LED顯示器內部由七個條形發光二極管和一個小圓點發光二極管組成,根據各管的亮暗組合成字符。
LED數碼管的g~a七個發光二極管因加正電壓而發亮,因加零電壓而不能發亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼(段碼),如顯示”0”,字形碼為3fh。
LED數碼管結構圖
數碼管的接口有靜態接口和動態接口。動態接口采用各數碼管循環輪流顯示的方法,當循環顯示頻率較高時,利用人眼的暫留特性,看不出閃爍顯示現象,這種顯示需要一個接口完成字形碼的輸出(字形選擇),另一接口完成各數碼管的輪流點亮(數位選擇)。
將二十四進制計數器和2個六十進制計數器的輸出作為LED顯示模塊的輸入,在時鐘信號的控制下通過此模塊完成6個LED數碼管的顯示,輸出信號為WEI[2…0]和LED[6…0],分別為位選信號和段碼輸出。
LED顯示示意圖
該模塊部分VHDL 源程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY clock1 IS
PORT(CLK: IN STD_LOGIC;
S1, S2, S3, S4, S5, S6: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
WEI: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
LED: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END ENTITY;
ARCHITECTURE behave OF clock1 IS
SIGNAL CNT6 : INTEGER RANGE 0 TO 5 := 0;
SIGNAL SHUJU: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PRO1:PROCESS(CLK)
BEGIN
IF CLK‘EVENT AND CLK = ’1‘ THEN
CNT6 <= CNT6 + 1;
CASE CNT6 IS
WHEN 0 => WEI <= “000”; SHUJU <= S1;
WHEN 1 => WEI <= “001”; SHUJU <= S2;
WHEN 2 => WEI <= “010”; SHUJU <= S3;
WHEN 3 => WEI <= “011”; SHUJU <= S4;
WHEN 4 => WEI <= “100”; SHUJU <= S5;
WHEN 5 => WEI <= “101”; SHUJU <= S6;
CNT6<=0;
WHEN OTHERS => NULL;
END CASE;
END IF;
END PROCESS;
PRO2: PROCESS(SHUJU)
BEGIN
CASE SHUJU IS
WHEN “0000” => LED<= “1111110”
WHEN “0001” => LED<= “0110000”
WHEN “0010” => LED<= “1101101”
WHEN “0011” => LED<= “1111001”
WHEN “0100” => LED<= “0110011”
WHEN “0101” => LED<= “1011011”
WHEN “0110” => LED<= “1011111”
WHEN “0111” => LED<= “1110000”
WHEN “1000” => LED<= “1111111”
WHEN “1001” => LED<= “1111011”
WHEN others=> LED<= “0000000”
END CASE;
END PROCESS;
END
通過上面的分頻器,兩個60進制的計數器,一個12/24進制的計數器,6選1掃描器,7段數碼顯示器,設計如圖所示的頂層。規定每一模塊的功能和各模塊之間的接口。同時整個計數器有清零。 設計思想,利用脈沖時鐘產生一個1Hz的信號來實現一秒鐘的控制,要產生1Hz的信號就要用到分頻器,實驗中用512分頻器把512Hz的信號變成1Hz。然后信號進入控制秒的計數器,當第60個脈沖時鐘到來時,產生一個進位信號, 送到控制分的計數器,同理,當第60個脈沖時鐘到來時,產生一個進位信號,送到控制小時的計數器。當小時計數器計數到12/24時,完成一個周期,跳轉到零。輸出是由動態掃描器來完成的。掃描器時鐘取至前面分頻未結束時的一個512Hz的信號。這樣就能夠在7段數碼顯示管上,以512Hz的頻率掃描顯示出時鐘的數字變化。
通過元件例化將各個模塊連接起來,組成一個整體。
元件例化就是將預先設計好的設計實體定義為一個元件,然后利用特定的語句將此元件與當前的設計實體中的指定端口相連接,從而為當前設計實體引入一個新的低一級的設計層次。所定義的例化元件相當于一個要插在這個電路系統板上的芯片,而當前設計實體中指定的端口則相當于這塊電路板上準備接受此芯片的一個插座。
1、描繪法
是制作電路板所需要工具最少,制作過程最簡單的一種方法。但精度不是很高
2、感光板法制作較簡單,特別是大面積接地線條時更能顯示出優勢。精度較高。但制作細線條時曝光需要經驗。
3、感光干膜法這種方法比起感光板法在成本上占有一定的優勢,比起熱轉印法在制作電路質量上有一定的優勢。但她的缺點是操作上有一定的難度,不象熱轉印法和感光板法那樣簡單。因此到低選用那種方法還應該根據您自己的感覺。
4、熱轉印法制作較簡單,特別是細線條時更能顯示出優勢,制作精度很大程度取決于設備,與人操作熟練程序基本上無關。初學者也能制作出精美的線路板。但需要激光打印機,對于大面積接地線條往往會有一些不足。
5、絲網印法制作相對復雜,對操作者的熟練程度有很大關系,特別是制版時的曝光控制很是關鍵,但對細線條和大面積接地線均能很好的表現。特別是在大批量生產時更能顯示出她的優勢。如果只需要制作幾張線路板您會覺得這種方法很麻煩,但當您需要制作幾百張幾千張線路板時,那么您非選她不可。
GND是地,電池負極,應該還有一個點接電池正極,可能是VDD,
F forward 和B backward 兩條線接前進/後退電機,
L left 和 R right 兩條線接左右轉向電機,
LED + - 應該是接收板上的某個功能的指示燈。
該遙控接收電路主要以集成塊IC2 (RX-2)為核心及其他元件組成,其 工作原理見圖2所示。 當操作遙控器上的各功能鍵時, 所發出的高頻信號經遙控車上的天線 接收后,由超再生接收電路解調出編 碼控制脈沖信號,再經電阻R3、電 容C7耦合,送到接收集成塊IC2的14 腳,經其內部放大處理后,從其相應 控制端輸出控制信號,送到電機驅動 控制電路。電動機驅動電路都是采用 雙端平衡方式,改變其兩端工作電壓 極性,就可控制電動機轉動方向。當 輸出的是前進信號時,集成塊IC2的11 腳輸出高電平控制信號,三極管VT8、 VT10、VT11隨之導通,電動機M1正 轉,遙控車前進。當輸出后退,左右 轉向控制信號時,用戶可自已分析電路原理。
該遙控發射電路主要以集成塊IC1 (TX-2BS)為核心及其他元件組成, 其工作原理如圖1所示。集成塊IC1的 3、11腳為電源供應端;其1、16腳為 左右轉彎控制信號輸入端;4、5腳為 前進和后退控制信號輸入端;6腳為 加速控制信號輸入端;7、8、9腳為 空端;10、12腳為編碼信號控制輸出 端;13、14腳外接振蕩電阻。三極管 VT2及晶體B1等構成載波振蕩器,其振 蕩頻率為35MHz。
在接通電源后,操作遙控器中的 功能鍵,其集成塊IC1相應控制腳接 地,內部對應的功能選通,開始進行 編碼產生與操作功能鍵相一致的編碼 信號,然后由其10腳輸出控制編碼脈 沖信號,同時其12腳輸出高電平控制 信號,發射二極管LED 亮,三極管VT2的B極有高電平信號而導通工作,三極 管VT2與晶體振蕩器B1組成的載波振蕩 器工作,產生35MHz的振蕩載波頻率, 經電容C3耦合到三極管VT1的B極。當 集成塊IC1(TX-2BS)的10腳輸出高 電平控制編碼脈沖信號時,三極管VT1 導通工作,其功能控制編碼脈沖信號 及三極管VT2及晶體振蕩器B1產生的 35MHz載波經三極管VT1調制放大后, 經電容C6、電感L3耦合發射出去。
由于微型無線遙控車其自身較 小,沒有空間安裝5號電池,生產廠家就采用三節紐扣電池串聯使用。當遙控車沒有電時,就把遙控手柄中的插頭插入遙控車的插座充電即可使用,其充電電路工作原理見圖1中虛線部分。
當微型車無電,把遙控手柄中的 插頭插入遙控車后,遙控器內的+6V電 壓通過連接插座進入到遙控車充電電 路,該電壓加到三極管VT7的C極;同 時還通過電阻R21,電阻R23加到三極 管VT4的B極和E極;通過電阻R20、電 阻R25、電容C10加到三極管VT3的B極 和C極。由于電容C10兩端電壓瞬間不 能突變,就給三極管VT3的B極提供一 定的偏置導通電壓,三極管VT3導通, 其C極電位降低,三極管VT4的B極電位 降低而導通,+6V電壓經過三極管VT4 的E、C極,電阻R18加到三極管VT7的 B極,三極管VT7導通,開始給遙控車 內電池組充電;同時,該電壓經電阻R22給電容CH充電,充電指示燈LED1 亮。在電容CH充電時,又給三極管VT3 的B極提供了一定的偏壓,從而加速了 三極管VT3、VT4、VT7的導通,隨后電 容的充電電流越來越小,三極管VT3、 VT4、VT7相應進入截止狀態,充電指 示燈LED1滅,表明給遙控車內電池組 充電結束。
下一篇: PLC、DCS、FCS三大控
上一篇: 航模遙控開關電路圖大
型號:H3CR-H8RL?DC100-125?M
價格:面議
庫存:10
訂貨號:H3CR-H8RL?DC100-125?M
型號:H3CR-AP?AC100-240/DC100-125
價格:面議
庫存:10
訂貨號:H3CR-AP?AC100-240/DC100-125
型號:H3CR-F?AC24-48/DC12-48
價格:面議
庫存:10
訂貨號:H3CR-F?AC24-48/DC12-48
型號:H3CR-H8RL?AC100-120?M
價格:面議
庫存:10
訂貨號:H3CR-H8RL?AC100-120?M
型號:H5CX-A?AC100-240(Q)
價格:面議
庫存:10
訂貨號:H5CX-A?AC100-240(Q)
型號:H5CN-XANM?AC100-240
價格:面議
庫存:10
訂貨號:H5CN-XANM?AC100-240