No.94711 作者:gbc9566 邮件:gbc956@163.com ID:55452 登陆:1次 文章数:1篇 最后登陆IP:58.49.148.135 最后登陆:2006/6/19 18:40:22 注册:2006/6/15 18:51:38 财富:105 发帖时间:2006/6/15 18:59:24 发贴者IP:58.49.245.100 标题:gbc9566:谁能帮我修改下数字时钟的程序啊 摘要:No.94711谁能帮我修改下数字时钟的程序啊 请大家帮我改下这个数字时钟的程序,总共有3个错误和6个警告,但是我费了好大的劲就上不知道错在那里,请高手不赐教。小弟在此先谢谢大家了啊! LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.std_logic_arith.all; ENTITY CK20 IS PORT(CLK,SETH,SETM,SETS,RST: IN STD_LOGIC; SECOND: OUT STD_LOGIC; LMIN,HMIN,LHOUR,HHOUR,LSEC,HSEC: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CK20; ARCHITECTURE CLOCK OF CK20 IS SIGNAL CLK1,CLK2:STD_LOGIC; SIGNAL LMIN1,HMIN1,LHOUR1,HHOUR1,LSEC1,HSEC1: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DISPLAYOUT: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DBUS: STD_LOGIC_VECTOR(7 DOWNTO 0); FUNCTION DISPLAY(SIGNAL A: STD_LOGIC_VECTOR(0 to 3)) RETURN STD_LOGIC_VECTOR IS --产生显示的子程序 BEGIN CASE A IS when "0001" => DISPLAYOUT <= "0001"; when "0010" => DISPLAYOUT <= "0010"; when "0011" => DISPLAYOUT <= "0011"; when "0100" => DISPLAYOUT <= "0100"; when "0101" => DISPLAYOUT <= "0101"; when "0110" => DISPLAYOUT <= "0110"; when "0111" => DISPLAYOUT <= "0111"; when "1000" => DISPLAYOUT <= "1000"; when "1001" => DISPLAYOUT <= "1001"; when "1010" => DISPLAYOUT <= "1010"; when "1011" => DISPLAYOUT <= "1011"; when "1100" => DISPLAYOUT <= "1100"; when "1101" => DISPLAYOUT <= "1101"; when "1110" => DISPLAYOUT <= "1110"; when "1111" => DISPLAYOUT <= "1111"; when others => DISPLAYOUT <= "0000"; END CASE; RETURN DISPLAYOUT; END FUNCTION DISPLAY; BEGIN SECOND <=CLK1; LSEC <=DISPLAY(LSEC1); --秒种的个位 HSEC <=DISPLAY(HSEC1); --秒种的十位 LMIN <=DISPLAY(LMIN1); --分钟的个位 HMIN <=DISPLAY(HMIN1); --分钟的十位 LHOUR <=DISPLAY(LHOUR1); --小时的个位 HHOUR <=DISPLAY(HHOUR1); --小时的十位 P1:PROCESS(CLK,RST) --CLK1产生一秒的时钟的块语句 CONSTANT N:INTEGER:=32768; VARIABLE COUNT: INTEGER:=0; BEGIN IF RST='1' THEN COUNT:=0; CLK1 <='1'; COUNT:=COUNT+1; ELSIF RISING_EDGE(CLK)THEN IF(COUNT <N/2) THEN CLK1 <='1'; COUNT:=COUNT+1; ELSIF(COUNT <N)THEN CLK1 <='0'; COUNT:=COUNT+1; END IF; END IF; END PROCESS; P2:PROCESS(CLK1,RST) --CLK2产生一分钟的时钟的块语句 CONSTANT M:INTEGER:=60; VARIABLE CON: INTEGER:=0; BEGIN IF RST='1' THEN CON:=0; CLK2 <='1'; CON:=CON+1; ELSIF RISING_EDGE(CLK1)THEN IF(CON <M/2) THEN CLK2 <='1'; CON:=CON+1; ELSIF(CON <M)THEN CLK2 <='0'; CON:=CON+1; END IF; END IF; END PROCESS; P3:PROCESS(RST,SETH,SETM,SETS) --复位和置数 BEGIN IF RST='1' THEN LSEC1 <=" ......
>>返回讨论的主题
|