色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于VHDL的電子計時器的設計方法詳解

定時器電路圖 ? 來源:電子發燒友整理 ? 2018-01-29 14:19 ? 次閱讀

本文為大家介紹電子計時器的VHDL設計方法。

設計要求

設計一個電子計時器,給定時鐘信號為512HZ,要求系統達到以下功能:

(1)用6個數碼管分別顯示時、分、秒,計時范圍為00:00:00~23:59:59。

(2)計時精度是1s。

(3)具有啟/ 停開關, 復位開關。

基于VHDL的電子計時器的設計方法詳解

總體方框圖

內部各功能模塊

本系統由六十進制計數器模塊、二十四進制計數器模塊、分頻模塊執行計時功能, 輸入信號是512Hz,通過分頻后為1Hz,時鐘信號是1Hz作為計時器的秒輸入,秒為60進制計數器,分也為60進制計數器,小時采用二十四進制計數器, 各級進位作為高位的使能控制。

六十進制計數器模塊

設計一個八位的六十進制計數器模塊,輸入信號為en、reset、clk,分別為使能、復位和時鐘信號,輸出信號為qa[3?0]、qb[3?0]、rco,分別為低4位輸出、高4位輸出和進位位。

基于VHDL的電子計時器的設計方法詳解

六十進制計數器

波形分析

基于VHDL的電子計時器的設計方法詳解

秒計數器的仿真波形圖

利用60進制計數器完成00到59的循環計數功能,當秒計數至59時,再來一個時鐘脈沖則產生進位輸出,即enmin=1;reset作為復位信號低電平有效,即高電平時正常循環計數,低電平清零。因為這種60進制的VHDL語言是很好寫的,它并不復雜,再說我們必須要學會這些基本的硬件語言的描寫。

基于VHDL的電子計時器的設計方法詳解

分鐘計數器的仿真波形圖

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位輸出。

基于VHDL的電子計時器的設計方法詳解

二十四進制計數器示意圖

波形分析

基于VHDL的電子計時器的設計方法詳解

小時計數器的仿真波形圖

VHDL源程序

小時計數模塊利用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的電子計時器的設計方法詳解

分頻器示意圖

VHDL 源程序

該模塊部分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顯示器內部由七個條形發光二極管和一個小圓點發光二極管組成,根據各管的亮暗組合成字符。

LED數碼管的g~a七個發光二極管因加正電壓而發亮,因加零電壓而不能發亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼(段碼),如顯示”0”,字形碼為3fh。

基于VHDL的電子計時器的設計方法詳解

LED數碼管結構圖

數碼管的接口有靜態接口和動態接口。動態接口采用各數碼管循環輪流顯示的方法,當循環顯示頻率較高時,利用人眼的暫留特性,看不出閃爍顯示現象,這種顯示需要一個接口完成字形碼的輸出(字形選擇),另一接口完成各數碼管的輪流點亮(數位選擇)。

將二十四進制計數器和2個六十進制計數器的輸出作為LED顯示模塊的輸入,在時鐘信號的控制下通過此模塊完成6個LED數碼管的顯示,輸出信號為WEI[2…0]和LED[6…0],分別為位選信號和段碼輸出。

基于VHDL的電子計時器的設計方法詳解

LED顯示示意圖

VHDL 源程序

該模塊部分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的頻率掃描顯示出時鐘的數字變化。

通過元件例化將各個模塊連接起來,組成一個整體。

元件例化就是將預先設計好的設計實體定義為一個元件,然后利用特定的語句將此元件與當前的設計實體中的指定端口相連接,從而為當前設計實體引入一個新的低一級的設計層次。所定義的例化元件相當于一個要插在這個電路系統板上的芯片,而當前設計實體中指定的端口則相當于這塊電路板上準備接受此芯片的一個插座。

VHDL 源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_signed.all;

use ieee.std_logic_arith.all;

entity dzjsq is

port(en,clk,reset:in std_logic;

wei:out std_logic_vector(2 downto 0);

led:out std_logic_vector(7 downto 0));

end entity dzjsq;

architecture abc of dzjsq is

component count60

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 component;

component count24

PORT( en,Reset,clk: in STD_LOGIC;

qa: out STD_LOGIC_VECTOR(3 DOWNTO 0);

qb: out STD_LOGIC_VECTOR(3 DOWNTO 0));

end component; component fenpinqi

PORT (CLK,RST:in std_logic; CLK_OUT:out std_logic);

end component; component clock1

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(7 DOWNTO 0));

end component;

signal a1,a2,a3,a4,a5,a6:std_logic_vector(3 downto 0);

signal b1,b2,b3: std_logic; begin

u1: fenpinqi port map(clk,reset,b1);

u2:count60 port map(en,reset,b1,a1,a2,b2);

u3:count60 port map(en,reset,b2,a3,a4,b3);

u4:count24 port map(en,reset,b3,a5,a6);

u5:clock1 port map(clk,a1,a2,a3,a4,a5,a6,wei,led);

end architecture abc;

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;

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; 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=512 THEN

clk_data<=NOT clk_data;

CNT6<=0;

ELSE CNT6<=CNT6+1;

END IF;

END IF;

CLK_OUT<=clk_data;

END PROCESS;

END behav;

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(7 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<= x“3f”

WHEN “0001” => LED<= x“06”

WHEN “0010” => LED<= x“5b”

WHEN “0011” => LED<= x“4f”

WHEN “0100” => LED<= x“66”

WHEN “0101” => LED<= x“6d”

WHEN “0110” => LED<= x“7d”

WHEN “0111” => LED<= x“07”

WHEN “1000” => LED<= x“7f”

WHEN “1001” => LED<= x“6f”

WHEN others=> LED<= x“00”

END CASE;

END PROCESS;

END

電子計時器的功能仿真結果

基于VHDL的電子計時器的設計方法詳解

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • vhdl
    +關注

    關注

    30

    文章

    819

    瀏覽量

    129211
  • VHDL代碼
    +關注

    關注

    2

    文章

    13

    瀏覽量

    20917
  • 電子計時器
    +關注

    關注

    0

    文章

    4

    瀏覽量

    3239
收藏 9人收藏
  • jf_173833751
  • KUNJM1

評論

相關推薦

一種實現計時器變為倒計時器的設計方案

計時器的設計方法很多,本文介紹了一種實現計時器變為倒計時器的設計方案。方案通過巧妙的設計方法實現了所有
發表于 01-07 11:39 ?9074次閱讀
一種實現<b class='flag-5'>計時器</b>變為倒<b class='flag-5'>計時器</b>的設計方案

電話計時器

電話計時器
發表于 03-02 20:43 ?1466次閱讀
電話<b class='flag-5'>計時器</b>

暗室計時器

暗室計時器
發表于 09-29 16:17 ?481次閱讀
暗室<b class='flag-5'>計時器</b>

計時器,什么是計時器,計時器原理是什么

計時器,什么是計時器,計時器原理是什么 計時器,是利用特定的原理來測量時間的裝置。計時器的種類包括電磁打點
發表于 03-08 17:52 ?1w次閱讀

時鐘計時器元件清單

時鐘計時器元件清單時鐘計時器元件清單時鐘計時器元件清單時鐘計時器元件清單時鐘計時器元件清單
發表于 11-18 17:07 ?29次下載

數字計時器Multisim設計

數字計時器Multisim設計,數字計時器Multisim設計,數字計時器Multisim設計
發表于 12-24 11:12 ?0次下載

電磁打點計時器和電火花計時器的區別

本文主要闡述了電磁打點計時器和電火花計時器的區別。
的頭像 發表于 01-08 09:57 ?10.4w次閱讀

電火花計時器工作原理_電火花計時器工作電壓

本文首先闡述了電火花計時器結構原理,其次介紹了電火花計時器工作原理,最后介紹了電火花計時器工作電壓。
的頭像 發表于 01-08 10:25 ?2.5w次閱讀
電火花<b class='flag-5'>計時器</b>工作原理_電火花<b class='flag-5'>計時器</b>工作電壓

vhdl語言編寫的9秒倒計時器資料下載

電子發燒友網為你提供vhdl語言編寫的9秒倒計時器資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到
發表于 04-25 08:41 ?19次下載
<b class='flag-5'>vhdl</b>語言編寫的9秒倒<b class='flag-5'>計時器</b>資料下載

電子計時器pcb圖下載

電子計時器pcb圖下載
發表于 11-26 09:36 ?12次下載

電子計時器的開發原理及功能

電子計時器是一種新型的電子讀數工具,有時候又叫做秒表。在日常生活工作學習中,能夠非常有效地幫助我們更好的進行時間管理。通過電子計時器來記錄運
的頭像 發表于 05-19 17:10 ?9649次閱讀

計時器的門鎖

電子發燒友網站提供《帶計時器的門鎖.zip》資料免費下載
發表于 12-29 14:58 ?0次下載
帶<b class='flag-5'>計時器</b>的門鎖

魔方計時器開源分享

電子發燒友網站提供《魔方計時器開源分享.zip》資料免費下載
發表于 06-13 15:18 ?1次下載
魔方<b class='flag-5'>計時器</b>開源分享

廚房計時器開源設計

電子發燒友網站提供《廚房計時器開源設計.zip》資料免費下載
發表于 06-15 14:55 ?0次下載
廚房<b class='flag-5'>計時器</b>開源設計

光電計時器的原理和使用

光電計時器的原理和使用? 光電計時器是一種高精度計時器,主要應用于自動控制領域中的計時和計數,同時也可以用于科學實驗和工藝生產中的計時和計數
的頭像 發表于 09-22 16:25 ?5521次閱讀
主站蜘蛛池模板: 国产亚洲视频在线观看 | 亚洲色播永久网址大全 | SAO货腿张开JI巴CAO死我 | 国产精品一久久香蕉国产线看 | 色怕怕 | 国产亚洲精品影视在线 | 久久国产视频网站 | 西施打开双腿下面好紧 | 中文字幕视频免费在线观看 | 久久免费大片 | 嗯好舒服嗯好大好猛好爽 | 国产看午夜精品理论片 | 国产精品第1页在线观看 | 小柔的性放荡羞辱日记 | 袖珍人与大黑人性视频 | 国产人妻人伦精品836700 | 国产高潮久久精品AV无码 | 久久re视频这里精品青 | 同时和两老师双飞 | 青娱乐视觉盛宴国产视频 | 色尼玛亚洲综合 | 国产黄a三级三级三级 | 涩涩视频www在线观看入口 | 久啪久久全部视频在线 | 99蜜桃在线观看免费视频网站 | 网友自拍区视频精品 | 国产成人亚洲综合无 | 欧美の无码国产の无码影院 | 免费乱理伦片在线观看夜 | 一个人免费视频在线观看 | 亚洲午夜精品A片久久WWW软件 | 麻豆XXXX乱女少妇精品 | 三八成人网| 亚洲欧美精品无码大片在线观看 | 国产日韩高清一区二区三区 | 好爽好深太大了再快一点 | 西施打开双腿下面好紧 | 国产成人免费在线观看 | 免费看大黄高清网站视频在线 | 黑人猛挺进小莹的体内视频 | 国产AV无码成人黄网站免费 |

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品