91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子元器件>數(shù)碼管>

vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案) - 全文

2018年01月29日 11:54 電子發(fā)燒友整理 作者: 用戶評(píng)論(0

本文為大家?guī)硭姆N不同的vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)。

vhdl數(shù)碼管動(dòng)態(tài)掃描一:循環(huán)滾動(dòng)

實(shí)現(xiàn)的功能

循環(huán)滾動(dòng),始終點(diǎn)亮6個(gè)數(shù)碼管,左出右進(jìn)。狀態(tài)為:012345-123450-234501-345012-450123-501234-012345

實(shí)現(xiàn)代碼:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL

ENTITY LED2 IS

PORT(CLK:IN STD_LOGIC;

SG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); BT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END LED2;

ARCHITECTURE ACE OF LED2 IS component div_2K

port(clk_in:instd_logic; clk_out:outstd_logic);

end component;

SIGNAL CNT6:INTEGER RANGE 0 TO 5;

SIGNAL A:INTEGER RANGE 0 TO 5;

SIGNAL COUNT:INTEGER RANGE 0 TO 4999 := 0;

SIGNAl FLAG:INTEGER RANGE 0 TO 6 := 0;

SIGNAl FLAG_A:INTEGER RANGE 0 TO 5;

SIGNAL clk_tmp:STD_LOGIC;

BEGIN

u1:div_2k port map(clk_in=>CLK,clk_out=>clk_tmp);

P1:process(CNT6)

BEGIN

CASE CNT6 IS --3線至6線譯碼器

WHEN 0 => BT <= “011111” A <= 0 --A為位碼

WHEN 1 => BT<= “101111” A <= 1

WHEN 2 => BT<= “110111” A <= 2

WHEN 3 => BT<= “111011” A <= 3

WHEN 4 => BT<= “111101” A <= 4

WHEN 5 => BT<= “111110” A <= 5

WHEN OTHERS => NULL;

END CASE

END PROCESS P1;

P2:process(clk_tmp)

BEGIN

IF clk_tmp‘EVENT AND clk_tmp= ’1‘ THEN --實(shí)現(xiàn)模6計(jì)數(shù)器 if CNT6= 5 then CNT6<= 0; else

CNT6<=CNT6 + 1; end if;

IF (FLAG = 6) THEN --設(shè)置標(biāo)志 FLAG <= 0;

END IF;

IF COUNT =4999 THEN

--相當(dāng)于另一個(gè)時(shí)鐘

COUNT <= 0; --計(jì)數(shù)周期為5000

FLAG <=FLAG+1; --當(dāng)記滿5000時(shí)左移動(dòng)一位 ELSE

COUNT <=COUNT+1; --不滿5000繼續(xù)計(jì)數(shù) END IF; END IF;

END PROCESS P2;

P3:process(A,F(xiàn)LAG,F(xiàn)LAG_A)

BEGIN

FLAG_A<=(( A + FLAG )mod 6) --使用求余運(yùn)算實(shí)現(xiàn)移位

CASE FLAG_A IS --實(shí)現(xiàn)數(shù)碼管的顯示功能

WHEN 0=> SG <= “1111110”;

WHEN 1=> SG <= “0110000”;

WHEN 2=> SG <= “1101101”;

WHEN 3=> SG <= “1111001”;

WHEN 4=> SG <=“0110011”;

WHEN 5=> SG <= “1011011”;

WHEN OTHERS =>NULL

END CASE

END PROCESS P3;

END ACE;

代碼分析:

為實(shí)現(xiàn)移位,關(guān)鍵改動(dòng)為新增一個(gè)計(jì)數(shù)器,技術(shù)周期遠(yuǎn)遠(yuǎn)大于掃描周期,這樣,在一個(gè)大的計(jì)數(shù)周期內(nèi),對(duì)于要顯示的6位數(shù)碼進(jìn)行動(dòng)態(tài)掃描(和實(shí)驗(yàn)任務(wù)1中相同),顯示出6種移位狀態(tài)中的一種;在下一個(gè)大的周期內(nèi),利用FLAG標(biāo)志,并使用求余運(yùn)算將顯示位的數(shù)碼移位,比如,大的計(jì)數(shù)周期為0時(shí),F(xiàn)LAG為0,顯示“012345”六位數(shù)碼,大的周期為1時(shí),F(xiàn)ALG為1,此時(shí)各位求余(即FLAG_A求余)對(duì)應(yīng)的數(shù)碼為123450,顯示的數(shù)碼也就為“123450”。以此類推,實(shí)現(xiàn)循環(huán)移位。

vhdl數(shù)碼管動(dòng)態(tài)掃描二:計(jì)數(shù)器數(shù)碼管動(dòng)態(tài)顯示

電路的框架圖

vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案)

電路的框架圖

vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案)

頂層原理圖

vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案)

動(dòng)態(tài)顯示計(jì)數(shù)的VHDL語言描述

vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案)

動(dòng)態(tài)顯示譯碼模塊的VHDL語言的描述

vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案)
vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案)

vhdl數(shù)碼管動(dòng)態(tài)掃描三:數(shù)字秒表動(dòng)態(tài)顯示

本次設(shè)計(jì)選用的開發(fā)板在4位數(shù)碼管輸入方面只提供1個(gè)數(shù)據(jù)接口,用來動(dòng)態(tài)顯示4位數(shù)據(jù),在數(shù)據(jù)輸入信號(hào)方面要做到和勢(shì)能控制信號(hào)同頻率輸出,才能保證數(shù)碼顯示不會(huì)出錯(cuò)或顯示移位。該模塊部分VHDL源程序如下:

vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案)

仿真波形

vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案)

vhdl數(shù)碼管動(dòng)態(tài)掃描四:8位數(shù)碼管輸出任意數(shù)值的顯示電路

實(shí)驗(yàn)設(shè)計(jì)注意事項(xiàng)

EDA/SOPC裝置中,圖示數(shù)碼管顯示采用的是動(dòng)態(tài)掃描方式,即當(dāng)掃描選通電路74LS138輸入為000,(SEL2、SEL1、SEL0為000時(shí),)Y0輸出低電平,8個(gè)數(shù)碼管中左邊第一個(gè)數(shù)碼管被選通,此時(shí),應(yīng)在數(shù)碼管輸入端輸入相應(yīng)數(shù)據(jù)。其中,74LS245起輸出驅(qū)動(dòng)作用。

人眼視覺暫留頻率在24Hz以上,如果大于該頻率,點(diǎn)亮單個(gè)七段顯示器,看上去能有8個(gè)同時(shí)顯示的效果,而且顯示也不閃爍。因此,選通頻率要大于24Hz以上。 依據(jù)實(shí)驗(yàn)裝置電路,完成七段LED顯示譯碼器的設(shè)計(jì)應(yīng)包含如下電路:

①分頻電路:將10MHz脈沖分頻到1kHz;

②七段譯碼電路;

③掃描計(jì)數(shù)電路:完成模8的計(jì)數(shù)電路,為掃描選通做準(zhǔn)備;

④掃描選通電路:利用分時(shí)傳輸思想,將要顯示的數(shù)據(jù)依次傳入數(shù)碼管顯示電路。

vhdl數(shù)碼管動(dòng)態(tài)掃描程序設(shè)計(jì)(四種設(shè)計(jì)方案)

VHDL代碼

LIBRARY IEEE;

USE IEEE.std_logic_1164.all;

USE IEEE.std_logic_arith.all;

USE IEEE.std_logic_unsigned.all;

ENTITY xianshi IS

PORT(clk:in std_logic;

smg:out std_logic_vector(7 downto 0);

sel:out std_logic_vector(2 downto 0));

END ENTITY;

ARCHITECTURE func OF xianshi IS

SIGNAL fp,tmp:std_logic;

SIGNAL count:std_logic_vector(9 downto 0);

SIGNAL sl:std_logic_vector(2 downto 0);

BEGIN

PROCESS(clk)

BEGIN

IF(clk‘EVENT AND clk = ’1‘)

THEN IF(count = “1111100111”)

THEN count <= (OTHERS => ’0‘);

tmp <= NOT tmp; ELSE

count <= count + 1; END IF;

END IF; fp <= tmp;

END PROCESS;

PROCESS(fp)

BEGIN

IF(fp’EVENT AND fp = ‘1’)

THEN IF(sl = “111”)

THEN sl <= “000”;

ELSE

sl <= sl + 1; END IF;

END IF;

END PROCESS;

sel <= sl;

PROCESS(sl) BEGIN

CASE sl IS

WHEN “000” => smg <= “01000000”;

WHEN “001” => smg <= “01111001”;

WHEN “010” => smg <= “00100100”;

WHEN “011” => smg <= “00110000”;

WHEN “100” => smg <= “00011001”;

WHEN “101” => smg <= “00010010”;

WHEN “110” => smg <= “00000010”;

WHEN “111” => smg <= “01111000”;

WHEN OTHERS => NULL;

END CASE;

END PROCESS;

END ARCHITECTURE;

上一頁123全文

非常好我支持^.^

(3) 100%

不好我反對(duì)

(0) 0%

( 發(fā)表人:李建兵 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?