您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页VHDL实例

VHDL实例

来源:宝玛科技网
3-8译码器 ........................................................................................................................................ 2 D触发器 ........................................................................................................................................... 3 加法器 .............................................................................................................................................. 3 计数器 .............................................................................................................................................. 4

-- An enable up/down counter ................................................................................................... 4 -- A synchronous load counter................................................................................................... 5 -- A synchronous clear load enable counter .............................................................................. 5 寄存器 .............................................................................................................................................. 6 数据选择器....................................................................................................................................... 6

3-8译码器

LIBRARY IEEE; -- 3-8译码器 USE IEEE.STD_LOGIC_11.ALL; ENTITY decode_3to8 IS

PORT(a,b,c,G1,G2A,G2B: IN STD_LOGIC;

y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END decode_3to8;

ARCHITECTURE rtl OF decode_3to8 IS

SIGNAL indata: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN

indata<=c & b & a;

PROCESS(indata,G1,G2A,G2B) BEGIN

IF(G1='1' AND G2A='0' AND G2B='0') THEN CASE indata IS

WHEN \"000\"=>y<=\"11111110\"; WHEN \"001\"=>y<=\"11111101\"; WHEN \"010\"=>y<=\"11111011\"; WHEN \"011\"=>y<=\"11110111\"; WHEN \"100\"=>y<=\"11101111\"; WHEN \"101\"=>y<=\"11011111\"; WHEN \"110\"=>y<=\"10111111\"; WHEN \"111\"=>y<=\"01111111\";

WHEN OTHERS=>y<=\"XXXXXXXX\"; END CASE; ELSE

y<=\"11111111\"; END IF;

END PROCESS; END rtl;

D触发器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL; ENTITY d_ff IS

PORT ( d, clk : IN STD_LOGIC ; q : OUT STD_LOGIC ; nq : OUT STD_LOGIC); END ENTITY d_ff;

ARCHITECTURE a_rs_ff OF d_ff IS BEGIN

PROCESS(CLK) BEGIN

IF clk = '1' AND clk'EVENT THEN q <= d ; nq <= NOT d; END IF; END PROCESS; END a_rs_ff;

加法器

LIBRARY ieee;

USE ieee.std_logic_11.all; USE ieee.std_logic_arith.all; ENTITY adder IS PORT (op1, op2 : IN UNSIGNED(7 downto 0); result : OUT INTEGER); END adder;

ARCHITECTURE maxpld OF adder IS BEGIN result <= CONV_INTEGER(op1 + op2); END maxpld;

LIBRARY ieee;

USE ieee.std_logic_11.all; USE ieee.std_logic_arith.all;

USE ieee.std_logic_UNSIGNED.all; ENTITY adder IS

PORT (op1, op2 : IN INTEGER range 0 to 255; result : OUT INTEGER range 0 to 511); END adder;

ARCHITECTURE maxpld OF adder IS BEGIN result <= op1 + op2; END maxpld;

计数器

LIBRARY ieee;

USE ieee.std_logic_11.all; USE ieee.std_logic_arith.all;

USE ieee.std_logic_UNSIGNED.all; ENTITY counters IS PORT ( d : IN INTEGER RANGE 0 TO 255; clk : IN BIT; clear : IN BIT; ld : IN BIT; enable : IN BIT; up_down : IN BIT; q : OUT INTEGER RANGE 0 TO 255;); END counters;

ARCHITECTURE a OF counters IS BEGIN

-- An enable up/down counter

PROCESS (clk) VARIABLE cnt : INTEGER RANGE 0 TO 255; VARIABLE direction : INTEGER; BEGIN IF (up_down = '1') THEN direction := 1; ELSE direction := -1; END IF; IF (clk'EVENT AND clk = '1') THEN IF enable = '1' THEN cnt := cnt + direction; END IF;

END IF; q <= cnt; END PROCESS;

-- A synchronous load counter

PROCESS (clk) VARIABLE cnt : INTEGER RANGE 0 TO 255; BEGIN IF (clk'EVENT AND clk = '1') THEN IF ld = '0' THEN cnt := d; ELSE cnt := cnt + 1; END IF; END IF; qb <= cnt; END PROCESS;

-- A synchronous clear load enable counter

PROCESS (clk) VARIABLE cnt : INTEGER RANGE 0 TO 255; BEGIN IF (clk'EVENT AND clk = '1') THEN IF clear = '0' THEN cnt := 0; ELSE IF ld = '0' THEN cnt := d; ELSE IF enable = '1' THEN cnt := cnt + 1; END IF; END IF; END IF; END IF; qk <= cnt; END PROCESS; END a;

寄存器

LIBRARY ieee;

USE ieee.std_logic_11.all; USE ieee.std_logic_arith.all;

USE ieee.std_logic_UNSIGNED.all;

ENTITY reg12 IS PORT( d : IN BIT_VECTOR(11 DOWNTO 0); clk : IN BIT; q : OUT BIT_VECTOR(11 DOWNTO 0)); END reg12;

ARCHITECTURE a OF reg12 IS BEGIN PROCESS BEGIN WAIT UNTIL clk = '1'; q <= d; END PROCESS; END a;

数据选择器

ENTITY selsig IS PORT ( d0, d1, d2, d3 : IN BIT; s : IN INTEGER RANGE 0 TO 3; output : OUT BIT ); END selsig;

ARCHITECTURE maxpld OF selsig IS BEGIN

WITH s SELECT -- creates a 4-to-1 multiplexer output <= d0 WHEN 0, d1 WHEN 1, d2 WHEN 2, d3 WHEN 3; END maxpld;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务