打印
[matlab]

纯小白在写作业,可是map过不去?报错啊。。。求助!!!

[复制链接]
3350|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zjj20081050|  楼主 | 2012-12-23 23:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, ic, logic, AN, IO
写期末作业,很简单的键盘译码。但是在map中过不去,貌似是键盘扫描程序有问题。贴在下面了,下面还有report,问题简单,大家不要笑,麻烦指出错误,谢谢!!!为什么被删了那么多信号呢?report中。
C:\Users\lenovo\Desktop\2012-12-23 21-46-12.jpg--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date:    21:07:34 12/22/12
-- Design Name:   
-- Module Name:    key_scan - Behavioral
-- Project Name:   
-- Target Device:  
-- Tool versions:  
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

ENTITY KEY_SCAN IS
   PORT (
          clk      : IN      std_logic:='0';   
          row      : IN      std_logic_vector(3 DOWNTO 0):="1111"; -- 键盘行向量
          press    : OUT     std_logic:='0';  
          column   : BUFFER  std_logic_vector(3 DOWNTO 0);  -- 输出列向量
          code     : BUFFER  std_logic_vector(3 DOWNTO 0):="ZZZZ"  -- 键盘编码0~f
         );
END KEY_SCAN;

ARCHITECTURE Behavioral OF KEY_SCAN IS
SIGNAL   clk_scan     :  std_logic;
SIGNAL   code_old     :  std_logic_vector(3 DOWNTO 0):="ZZZZ";
SIGNAL   cnt_key      :  integer range 1 to 8;       

BEGIN
   

  process(clk)
  variable tt: integer:=0;
        begin
        tt:=tt+1;
   if(tt=9) then tt:=1; end if;  
    cnt_key<=tt;
        end process;

  --scan clock =0.25clk
  process(clk,cnt_key)
  begin
   if(cnt_key<5)then
    clk_scan<='1';
        else
    clk_scan<='0';  
   end if;
end process;

--scan keyboard
process(clk_scan)
   variable t: integer:=0;
begin
   if(clk_scan'EVENT and clk_scan='1')then
    case t is
    when 0=>column<="1110";
    when 1=>column<="1101";
    when 2=>column<="1011";
    when 3=>column<="0111";
    when others=>null;
    end case;
    t:=t+1;
    if(t=4) then t:=0; end if;  
   end if;
end process;

--keyboard code output
process(clk)
   begin  
    if(cnt_key>1 and cnt_key<5)then
         case column is
            when "1110" =>
                     case row is
                        when "1110" =>code<= "0000";
                        when "1101" =>code<= "0001";  
                        when "1011" =>code<= "0010";
                        when "0111" =>code<= "0011";
                        when OTHERS =>code<= "ZZZZ";
                     end case;
            when "1101" =>
                     case row is
                        when "1110" =>code<= "0100";
                        when "1101" =>code<= "0101";
                        when "1011" =>code<= "0110";
                        when "0111" =>code<= "0111";
                        when OTHERS =>code<= "ZZZZ";
                    end case;
            when "1011" =>
                     case row is
                        when "1110" =>code<= "1000";
                        when "1101" =>code<= "1001";
                        when "1011" =>code<= "1010";
                        when "0111" =>code<= "1011";
                        when OTHERS =>code<= "ZZZZ";
                     end case;
            when "0111" =>
                     case row is
                        when "1110" =>code<= "1100";
                        when "1101" =>code<= "1101";
                        when "1011" =>code<= "1110";
                        when "0111" =>code<= "1111";
                        when OTHERS =>code<= "ZZZZ";
                     end case;
            when OTHERS =>code<= "ZZZZ";
       end case;
                 else
                         code<= "ZZZZ";
     end if;
      if(cnt_key=4) then
                   code_old<=code;
           end if;
   end process;
   
--key press signal output
process(clk)
   begin
            if(code_old/=code and code/="ZZZZ") then
                   if(cnt_key=3) then
           press<='1';
                        else
           press<='0';
         end if;
                 else
           press<='0';
     end if;
   end process;
   
END Behavioral;


这是report。。。。

Number of errors   :  14
Number of warnings :   1

Section 1 - Errors
------------------
ERROR:MapLib:661 - LUT3 symbol "XLXI_4/_n0046131" (output signal=CHOICE875) has
   input signal "XLXI_4/_n0034" which will be trimmed. See the trim report for
   details about why the input signal will become undriven.
省略
Section 2 - Warnings
--------------------
WARNING:LIT:243 - Logical network XLXN_2 has no load.

Section 3 - Informational
-------------------------
INFO:MapLib:562 - No environment variables are currently set.

Section 4 - Removed Logic Summary
---------------------------------
363 signal(s) removed
  95 Block(s) redundant

Section 5 - Removed Logic
-------------------------

The trimmed logic reported below is either:
   1. part of a cycle
   2. part of disabled logic
   3. a side-effect of other trimmed logic

The signal "XLXI_4/t<1>" is unused and has been removed.
The signal "XLXI_4/code_old<2>" is unused and has been removed.
The signal "XLXI_4/code_old<0>" is unused and has been removed.
The signal "XLXI_4/key_scan__n0007<4>_cyo" is unused and has been removed.
The signal "XLXI_4/code_old<1>" is unused and has been removed.
The signal "XLXI_4/code_old<3>" is unused and has been removed.
The signal "XLXI_4/_n0003" is unused and has been removed.
The signal "XLXI_4/_n0004" is unused and has been removed.
The signal "XLXI_4/t<0>" is unused and has been removed.
省略

相关帖子

沙发
shiyinjita| | 2012-12-24 00:05 | 只看该作者
引脚分配错误啊

使用特权

评论回复
板凳
zjj20081050|  楼主 | 2012-12-24 00:10 | 只看该作者
哦,请问怎么改啊?求进一步指点。之前都没有模过。。。。。。

使用特权

评论回复
地板
zjj20081050|  楼主 | 2012-12-24 00:11 | 只看该作者
shiyinjita 发表于 2012-12-24 00:05
引脚分配错误啊

???求指点。

使用特权

评论回复
5
shiyinjita| | 2012-12-24 00:15 | 只看该作者
你的UCF文件中的引脚位置有可能约束错误

使用特权

评论回复
6
shiyinjita| | 2012-12-24 00:21 | 只看该作者
zjj20081050 发表于 2012-12-24 00:11
???求指点。

我下了啊,太困了

使用特权

评论回复
7
zjj20081050|  楼主 | 2012-12-24 00:33 | 只看该作者
恩恩,晚安了!

使用特权

评论回复
8
hawksabre| | 2012-12-24 17:49 | 只看该作者
帮你顶一个   希望有人能够耐心的看下去  哦呵呵   

使用特权

评论回复
9
hawksabre| | 2012-12-24 17:50 | 只看该作者
个人觉得在引脚定义上比较乱   你自己在看看别人的意见   哦呵呵

使用特权

评论回复
10
zjj20081050|  楼主 | 2012-12-24 19:39 | 只看该作者
hawksabre 发表于 2012-12-24 17:50
个人觉得在引脚定义上比较乱   你自己在看看别人的意见   哦呵呵

谢谢了!

使用特权

评论回复
11
GoldSunMonkey| | 2012-12-24 20:29 | 只看该作者
你有UCF文件么?

使用特权

评论回复
12
zjj20081050|  楼主 | 2012-12-24 21:29 | 只看该作者
GoldSunMonkey 发表于 2012-12-24 20:29
你有UCF文件么?

有的,能传吗?

使用特权

评论回复
13
zjj20081050|  楼主 | 2012-12-24 21:30 | 只看该作者
GoldSunMonkey 发表于 2012-12-24 20:29
你有UCF文件么?

恩,请看。
#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin Assignments
NET "Clock20MHZ"  LOC = "p185"  ;
NET "colum<0>"  LOC = "p192"  ;
NET "colum<1>"  LOC = "p193"  ;
NET "colum<2>"  LOC = "p194"  ;
NET "colum<3>"  LOC = "p195"  ;
NET "DispSelect<0>"  LOC = "p141"  ;
NET "DispSelect<1>"  LOC = "p142"  ;
NET "DispSelect<2>"  LOC = "p146"  ;
NET "DispSelect<3>"  LOC = "p147"  ;
NET "DispSelect<4>"  LOC = "p148"  ;
NET "DispSelect<5>"  LOC = "p149"  ;
NET "DispSelect<6>"  LOC = "p150"  ;
NET "DispSelect<7>"  LOC = "p151"  ;
NET "LEDCode<0>"  LOC = "p132"  ;
NET "LEDCode<1>"  LOC = "p133"  ;
NET "LEDCode<2>"  LOC = "p134"  ;
NET "LEDCode<3>"  LOC = "p135"  ;
NET "LEDCode<4>"  LOC = "p136"  ;
NET "LEDCode<5>"  LOC = "p138"  ;
NET "LEDCode<6>"  LOC = "p139"  ;
NET "LEDCode<7>"  LOC = "p140"  ;
NET "row<0>"  LOC = "p187"  ;
NET "row<1>"  LOC = "p188"  ;
NET "row<2>"  LOC = "p189"  ;
NET "row<3>"  LOC = "p191"  ;

#PACE: Start of PACE Area Constraints

#PACE: Start of PACE Prohibit Constraints

使用特权

评论回复
14
zjj20081050|  楼主 | 2012-12-24 21:31 | 只看该作者
有的,请看啊。
#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin Assignments
NET "Clock20MHZ"  LOC = "p185"  ;
NET "colum<0>"  LOC = "p192"  ;
NET "colum<1>"  LOC = "p193"  ;
NET "colum<2>"  LOC = "p194"  ;
NET "colum<3>"  LOC = "p195"  ;
NET "DispSelect<0>"  LOC = "p141"  ;
NET "DispSelect<1>"  LOC = "p142"  ;
NET "DispSelect<2>"  LOC = "p146"  ;
NET "DispSelect<3>"  LOC = "p147"  ;
NET "DispSelect<4>"  LOC = "p148"  ;
NET "DispSelect<5>"  LOC = "p149"  ;
NET "DispSelect<6>"  LOC = "p150"  ;
NET "DispSelect<7>"  LOC = "p151"  ;
NET "LEDCode<0>"  LOC = "p132"  ;
NET "LEDCode<1>"  LOC = "p133"  ;
NET "LEDCode<2>"  LOC = "p134"  ;
NET "LEDCode<3>"  LOC = "p135"  ;
NET "LEDCode<4>"  LOC = "p136"  ;
NET "LEDCode<5>"  LOC = "p138"  ;
NET "LEDCode<6>"  LOC = "p139"  ;
NET "LEDCode<7>"  LOC = "p140"  ;
NET "row<0>"  LOC = "p187"  ;
NET "row<1>"  LOC = "p188"  ;
NET "row<2>"  LOC = "p189"  ;
NET "row<3>"  LOC = "p191"  ;

#PACE: Start of PACE Area Constraints

#PACE: Start of PACE Prohibit Constraints

使用特权

评论回复
15
shiyinjita| | 2012-12-24 21:33 | 只看该作者
你来发个附件嘛,这样看比较麻烦了

使用特权

评论回复
16
shiyinjita| | 2012-12-24 21:34 | 只看该作者
还有器件型号,这些都没有说明啊

使用特权

评论回复
17
GoldSunMonkey| | 2012-12-24 21:38 | 只看该作者
器件

使用特权

评论回复
18
zjj20081050|  楼主 | 2012-12-24 21:38 | 只看该作者
恩,好了。

KEYLED.rar

361 Bytes

使用特权

评论回复
19
shiyinjita| | 2012-12-24 21:41 | 只看该作者
???那款啊 ? 不清楚器件型号,怎么看啊

使用特权

评论回复
20
GoldSunMonkey| | 2012-12-24 21:42 | 只看该作者
我让你给出器件的型号

使用特权

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

本版积分规则

0

主题

0

帖子

1

粉丝