8421码转换十进制程序

电子说

1.3w人已加入

描述

8421码

8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。由于代码中从左到右每一位的1分别表示8,4,2,1,所以把这种代码叫做8421代码。每一位的1代表的十进制数称为这一位的权。8421码中的每一位的权是固定不变的。

十进制

600,3/5,-7.99……看着这些耳熟能详的数字,你有没有想太多呢?其实这都是全世界通用的十进制,即1.满十进一,满二十进二,以此类推……2.按权展开,第一位权为10^0,第二位10^1……以此类推,第N位10^(N-1),该数的数值等于每位位的数值*该位对应的权值之和。

8421码转换十进制程序

  代码

8421码十进制计数器:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY GKY07P10 IS

PORT(clk,reset:IN STD_LOGIC;

q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END GKY07P10;

ARCHITECTURE struc OF GKY07P10 IS

SIGNAL q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(clk)

BEGIN

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

IF reset=’1‘THEN q_temp《=“0000”;

ELSIF q_temp=“1001”THEN

q_temp《=“0000”;

ELSE

q_temp《=q_temp+1;

END IF;

END IF;

END PROCESS;

q《=q_temp;

END struc;

从状态‘0000’到状态‘1001’,然后再跳回‘0000’,异步复位要立即复位。

分频器:

  代码

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY GKY07P13 IS

PORT(clk,clear:IN STD_LOGIC;

clk_out:OUT STD_LOGIC);

END GKY07P13;

ARCHITECTURE struc OF GKY07P13 IS

SIGNAL temp:INTEGER RANGE 0 TO 11;

BEGIN

p1:PROCESS(clear,clk)

BEGIN

IF clear=‘0’ THEN

temp《=0;

ELSIF clk‘EVENT AND clk=’1‘ THEN

IF temp=11 THEN

temp《=0;

ELSE

temp《=temp+1;

END IF;

END IF;

END PROCESS p1;

p2:PROCESS(temp)

BEGIN

IF temp《6 THEN

clk_out《=’0‘;

ELSE

clk_out《=’1‘;

END IF;

END PROCESS p2;

END struc;

很重要的一个器件,但是设计难度并不很高,首先是模为12的计数,然后是占空比50%。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY LED IS

PORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

b:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END LED;

ARCHITECTURE LEDarch OF LED IS

BEGIN

PROCESS(a)

BEGIN

CASE a IS

WHEN“0000” =》 b 《= “1111110”; --0

WHEN“0001” =》 b 《= “0110000”; --1

WHEN“0010” =》 b 《= “1101101”; --2

WHEN“0011” =》 b 《= “1111001”; --3

WHEN“0100” =》 b 《= “0110011”; --4

WHEN“0101” =》 b 《= “1011011”; --5

WHEN“0110” =》 b 《= “1011111”; --6

WHEN“0111” =》 b 《= “1110000”; --7

WHEN“1000” =》 b 《= “1111111”; --8

WHEN“1001” =》 b 《= “1111011”; --9

WHEN OTHERS =》 b 《=“0000000”;

END CASE;

END PROCESS;

END;

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分