打印

求大虾们指点迷津,看看哪错了

[复制链接]
1374|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LOVE丶蝈蝈|  楼主 | 2013-8-20 17:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
library ieee;
use ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity  AS is
PORT ( CLK  :  IN  STD_LOGIC;
       key  : IN  STD_LOGIC_VECTOR(3 DOWNTO 0);  
       duan  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
       wei : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
end ;
ARCHITECTURE bhv OF AS IS
signal tmp: std_logic_vector(3 downto 0);
begin
process(CLK)
variable  n:integer range  0 to 19;
begin
if  rising_edge(CLK) then  n:=n+1;
  if n<=4  then tmp<="1110";
    elsif n<=9 and  n>4  then
     tmp<="1101";
      elsif n<=14 and n>9  then  
        tmp<="1011";
         else
            tmp<="0111";
            n:=0;
         end if;
     end  if;
     end  if;
end process;  
PROCESS( tmp )
begin
  wei<="11111111" ;   
    tmp<=key;
CASE  tmp IS
   WHEN "1110" =>wei<="11111110";duan <= "11111001";    --  1--按下key1数码管显示1
   WHEN "1101" =>wei<="11111101";duan <= "10100100";    --  2--按下key2数码管显示2
   WHEN "1011" =>wei<="11111011";duan <= "10110000";    --  3--按下key3数码管显示3
   WHEN "0111" =>wei<="11110111";duan <= "10011001";    --  4--按下key4数码管显示4
   WHEN OTHERS =>  duan <= "11111111";
   END CASE ;
  END PROCESS ;
END ;  

相关帖子

沙发
雷影少年| | 2013-8-20 17:06 | 只看该作者
VHDL,好久没用了,都忘了。

使用特权

评论回复
板凳
LOVE丶蝈蝈|  楼主 | 2013-8-20 17:15 | 只看该作者
恩,还是谢谢你,,我在等等吧

使用特权

评论回复
地板
huangxz| | 2013-8-20 18:26 | 只看该作者
什么问题啊?

使用特权

评论回复
5
huangxz| | 2013-8-20 18:39 | 只看该作者
如果就从综合角度来讲,这个程序是有问题的tmp不可以在两个process里面同时赋值。

使用特权

评论回复
6
LOVE丶蝈蝈|  楼主 | 2013-8-21 09:58 | 只看该作者
huangxz 发表于 2013-8-20 18:39
如果就从综合角度来讲,这个程序是有问题的tmp不可以在两个process里面同时赋值。 ...

谢谢,,修改修改

使用特权

评论回复
7
LOVE丶蝈蝈|  楼主 | 2013-8-21 10:03 | 只看该作者
但是tmp是 信号可以在多个进程中使用。问题提示
在if语句中,是语法错误

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝