在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1943|回复: 0

[求助] VHDL 端口映射问题 求助

[复制链接]
发表于 2015-5-13 13:49:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
现需要将多个switch连成网络,switch的实体声明和package 如下




  1. entity Switch_Top is
  2. port( clk                  : in bit;
  3.         rst                 : in bit;
  4.         Switch_nodeID  : in  bit_vector(3 downto 0);

  5.     -- port connected with former switch
  6.         --0=Nor; 1=Sou; 2=Wst; 3=Est; 4=Loc
  7.           chsel_data_in_array     : in  Node_data_arraytype:= (others => ('0',B"0000",B"0000",'0','0',(others =>'0')));
  8.           chsel_wrt_array_in       : in  Node_sig_arraytype;   
  9.           chsel_avl_RT_array_out  : out Node_sig_arraytype;
  10.           chsel_avl_BE_array_out  : out Node_sig_arraytype;
  11.           
  12.     -- port connected with next switch
  13.           arb_avl_RT_array_in   : in  Node_sig_arraytype;
  14.           arb_avl_BE_array_in   : in  Node_sig_arraytype;
  15.           arb_wrt_array_out     : out Node_sig_arraytype;
  16.             arb_ch_out_array            : out Node_data_arraytype:= (others => ('0',B"0000",B"0000",'0','0',(others =>'0')))
  17.         );
  18. end entity Switch_Top;


复制代码





  1. package Switch_Package is

  2.   constant PAYLOAD_WIDTH        : integer:= 73;
  3.   constant Address_WIDTH    : integer:=  4;  
  4.   constant fifo_DEPTH       : integer:=  4;
  5.   constant x                                : integer:=  4;
  6.   constant y                                : integer:=  4;
  7.   constant switch_number        : integer:=x*y;

  8.   type Node_ch_type is record
  9.     valid           : bit;
  10.     SrcnodeID       : bit_vector(3 downto 0);
  11.       --"0000"North, "0001"South, "0010"West, "0011"East, "0100" Local
  12.     DstnodeID       : bit_vector(3 downto 0);
  13.       --"0000"North, "0001"South, "0010"West, "0011"East, "0100" Local
  14.     Trsf_Mode       : bit;  
  15.       -- transfer mode: '1' real-time (high-priority), '0' best-effort (low-priority)
  16.     Last            : bit;
  17.       -- reserve for burst mode, not realized in DME yet
  18.     Payload         : bit_vector(PAYLOAD_WIDTH-1 downto 0);
  19.       -- data in form of package to be transferred
  20.   end record;
  21.   
  22.   type Node_sig_arraytype   is array (0 to 4) of bit;
  23.   type Node_data_arraytype  is array (0 to 4) of Node_ch_type;        --connect different switchs
  24.   type Node_sig_arrow_arraytype  is array (0 to 4, 0 to 4) of bit;    --connect arbiters and FIFOs
  25.   type Node_data_arrow_arraytype is array (0 to 4, 0 to 4) of Node_ch_type;

  26.   type Ram_Data_array is array (0 to FIFO_DEPTH-1) of Node_ch_type;  
  27.   type TAG_array is array (0 to 3) of integer;
  28.   
  29.   type ABCD is (A, B, C, D);
  30.   type ABCD_sig_type is array (ABCD) of bit;
  31.   type ABCD_ch_type  is array (ABCD) of Node_ch_type;

  32.   type nodeID is array (0 to switch_number-1) of bit_vector(0 to 3);
  33.   type net_sig_array  is array (0 to switch_number-1) of bit;
  34.   type net_data_array is array (0 to switch_number-1) of Node_ch_type;
  35.   type net_sig_arrow_array is array (0 to switch_number-1 , 0 to 3) of bit;
  36.   type net_data_arrow_array is array (0 to switch_number-1, 0 to 3) of Node_ch_type;

  37. end package Switch_Package;


复制代码



简化的网络的顶层文件代码及modelsim报错如下, 跪求大神帮忙看看有什么问题 应该如何修改




  1. library ieee,std;
  2. use ieee.std_logic_1164.all;
  3. use std.standard.all;
  4. use work.Switch_Package.all;

  5. entity Net_Top is
  6. port( clk                  : in bit;
  7.       rst                 : in bit;
  8.           Switch_nodeID  : in nodeID;
  9.         --0=Nor; 1=Sou; 2=Wst; 3=Est; 4=Loc
  10.       switch_data_in_array     : in  net_data_array:= (others => ('0',B"0000",B"0000",'0','0',(others =>'0')));
  11.       switch_wrt_array_in      : in  net_sig_array;   
  12.           switch_avl_RT_array_out  : out net_sig_array;
  13.           switch_avl_BE_array_out  : out net_sig_array;
  14.           
  15.           switch_avl_RT_array_in   : in  net_sig_array;
  16.           switch_avl_BE_array_in   : in  net_sig_array;
  17.       switch_wrt_array_out     : out net_sig_array;
  18.             switch_ch_out_array             : out net_data_array:= (others => ('0',B"0000",B"0000",'0','0',(others =>'0')))
  19.         );
  20. end entity Net_Top;

  21. architecture behav of Net_Top is
  22.   signal data_switch_arrow_array                : net_data_arrow_array;
  23.   signal avl_BE_switch_arrow_array                : net_sig_arrow_array;
  24.   signal avl_RT_switch_arrow_array                : net_sig_arrow_array;
  25.   signal wrt_switch_arrow_array                        : net_sig_arrow_array;
  26. --"0 to switch_number-1" express nodeID "0 to 3" express n,s,w,e   
  27.        
  28. begin          
  29.                 list_array1:for j in 0 to y-1 generate
  30.                                 first_node1:if (j=0) generate
  31.                                         switch:entity work.Switch_Top(behav)
  32.                                         port map
  33.                                         (        clk                                 => clk,
  34.                                                 rst                                 => rst,
  35.                                                 Switch_nodeID         => Switch_nodeID(0),
  36.                                                
  37.                                                 chsel_data_in_array(4)                => switch_data_in_array(0),
  38.                                                 chsel_wrt_array_in (4)                => switch_wrt_array_in (0),       
  39.                                                 chsel_avl_RT_array_out(4)        => switch_avl_RT_array_out(0),
  40.                                                 chsel_avl_BE_array_out(4)        => switch_avl_BE_array_out(0),
  41.                                                 arb_avl_RT_array_in(4)                => switch_avl_RT_array_in (0),
  42.                                                 arb_avl_BE_array_in(4)                => switch_avl_BE_array_in (0),
  43.                                                 arb_wrt_array_out  (4)                => switch_wrt_array_out(0),
  44.                                                 arb_ch_out_array   (4)                => switch_ch_out_array (0),                               
  45.                                
  46.                                                 chsel_data_in_array(0)        => data_switch_arrow_array(1,0),
  47.                                                 chsel_wrt_array_in(0)  => wrt_switch_arrow_array (1,0),
  48.                                                 arb_avl_RT_array_in(0)  => avl_RT_switch_arrow_array(1,0),
  49.                                                 arb_avl_BE_array_in(0)  => avl_BE_switch_arrow_array(1,0),
  50.                                                 chsel_avl_RT_array_out(0) => avl_RT_switch_arrow_array(0,1),  
  51.                                                 chsel_avl_BE_array_out(0) => avl_BE_switch_arrow_array(0,1),
  52.                                                 arb_wrt_array_out(0) => wrt_switch_arrow_array(0,1),
  53.                                                 arb_ch_out_array(0)  => data_switch_arrow_array(0,1),
  54.                                                
  55.                                                 chsel_data_in_array(3)        => data_switch_arrow_array(0,3),
  56.                                                 chsel_wrt_array_in (3)  => wrt_switch_arrow_array (0,3),
  57.                                                 arb_avl_RT_array_in(3)  => avl_RT_switch_arrow_array(0,3),
  58.                                                 arb_avl_BE_array_in(3)  => avl_BE_switch_arrow_array(0,3),       
  59.                                                 chsel_avl_RT_array_out(3) => avl_RT_switch_arrow_array(4,2),
  60.                                                 chsel_avl_BE_array_out(3) => avl_BE_switch_arrow_array(4,2),
  61.                                                 arb_wrt_array_out(3) => wrt_switch_arrow_array(4,2),
  62.                                                 arb_ch_out_array(3)  => data_switch_arrow_array(4,2)
  63.                                         );
  64.                                 end generate first_node1;
  65.                                 last_node1:if(j=y-1) generate
  66.                                         switch:entity work.Switch_Top(behav)
  67.                                         port map
  68.                                         (        clk                                 => clk,
  69.                                                 rst                                 => rst,
  70.                                                 Switch_nodeID         => Switch_nodeID(j),
  71.                                
  72.                                                 chsel_data_in_array(4)                => switch_data_in_array(j),
  73.                                                 chsel_wrt_array_in (4)                => switch_wrt_array_in (j),       
  74.                                                 chsel_avl_RT_array_out(4)        => switch_avl_RT_array_out(j),
  75.                                                 chsel_avl_BE_array_out(4)        => switch_avl_BE_array_out(j),
  76.                                                 arb_avl_RT_array_in(4)                => switch_avl_RT_array_in (j),
  77.                                                 arb_avl_BE_array_in(4)                => switch_avl_BE_array_in (j),
  78.                                                 arb_wrt_array_out  (4)                => switch_wrt_array_out(j),
  79.                                                 arb_ch_out_array   (4)                => switch_ch_out_array (j),                               
  80.                                
  81.                                                 chsel_data_in_array(1)        => data_switch_arrow_array(j,1),
  82.                                                 chsel_wrt_array_in (1)  => wrt_switch_arrow_array (j,1),
  83.                                                 arb_avl_RT_array_in(1)  => avl_RT_switch_arrow_array(j,1),
  84.                                                 arb_avl_BE_array_in(1)  => avl_BE_switch_arrow_array(j,1),
  85.                                                 chsel_avl_RT_array_out(1) => avl_RT_switch_arrow_array(j-1,0),
  86.                                                 chsel_avl_BE_array_out(1) => avl_BE_switch_arrow_array(j-1,0),
  87.                                                 arb_wrt_array_out(1) => wrt_switch_arrow_array(j-1,0),
  88.                                                 arb_ch_out_array(1)  => data_switch_arrow_array(j-1,0),
  89.                                                
  90.                                                 chsel_data_in_array(3)        => data_switch_arrow_array(j,3),
  91.                                                 chsel_wrt_array_in (3)  => wrt_switch_arrow_array (j,3),
  92.                                                 arb_avl_RT_array_in(3)  => avl_RT_switch_arrow_array(j,3),
  93.                                                 arb_avl_BE_array_in(3)  => avl_BE_switch_arrow_array(j,3),       
  94.                                                 chsel_avl_RT_array_out(3) => avl_RT_switch_arrow_array(y+j,2),
  95.                                                 chsel_avl_BE_array_out(3) => avl_BE_switch_arrow_array(y+j,2),
  96.                                                 arb_wrt_array_out(3) => wrt_switch_arrow_array(y+j,2),
  97.                                                 arb_ch_out_array(3)  => data_switch_arrow_array(y+j,2)
  98.                                         );
  99.                                 end generate last_node1;
  100.                                 other_node1:if(j/=0 and j/=y-1) generate
  101.                                         switch:entity work.Switch_Top(behav)
  102.                                         port map
  103.                                         (        clk                                 => clk,
  104.                                                 rst                                 => rst,
  105.                                                 Switch_nodeID         => Switch_nodeID(j),
  106.                                
  107.                                                 chsel_data_in_array(4)                => switch_data_in_array(j),
  108.                                                 chsel_wrt_array_in (4)                => switch_wrt_array_in (j),       
  109.                                                 chsel_avl_RT_array_out(4)        => switch_avl_RT_array_out(j),
  110.                                                 chsel_avl_BE_array_out(4)        => switch_avl_BE_array_out(j),
  111.                                                 arb_avl_RT_array_in(4)                => switch_avl_RT_array_in (j),
  112.                                                 arb_avl_BE_array_in(4)                => switch_avl_BE_array_in (j),
  113.                                                 arb_wrt_array_out  (4)                => switch_wrt_array_out(j),
  114.                                                 arb_ch_out_array   (4)                => switch_ch_out_array (j),                                       
  115.                                
  116.                                                 chsel_data_in_array(0)        => data_switch_arrow_array(j,0),
  117.                                                 chsel_wrt_array_in (0)  => wrt_switch_arrow_array(j,0),                                               
  118.                                                 arb_avl_RT_array_in(0)  => avl_RT_switch_arrow_array(j,0),
  119.                                                 arb_avl_BE_array_in(0)  => avl_BE_switch_arrow_array(j,0),
  120.                                                 chsel_avl_RT_array_out(0) => avl_RT_switch_arrow_array(j+1,1),
  121.                                                 chsel_avl_BE_array_out(0) => avl_BE_switch_arrow_array(j+1,1),
  122.                                                 arb_wrt_array_out(0) => wrt_switch_arrow_array(j+1,1),
  123.                                                 arb_ch_out_array (0) => data_switch_arrow_array(j+1,1),
  124.                                                
  125.                                                 chsel_data_in_array(1)        => data_switch_arrow_array(j,1),
  126.                                                 chsel_wrt_array_in (1)  => wrt_switch_arrow_array(j,1),
  127.                                                 arb_avl_RT_array_in(1)  => avl_RT_switch_arrow_array(j,1),
  128.                                                 arb_avl_BE_array_in(1)  => avl_BE_switch_arrow_array(j,1),
  129.                                                 chsel_avl_RT_array_out(1) => avl_RT_switch_arrow_array(j-1,0),
  130.                                                 chsel_avl_BE_array_out(1) => avl_BE_switch_arrow_array(j-1,0),
  131.                                                 arb_wrt_array_out(1) => wrt_switch_arrow_array(j-1,0),
  132.                                                 arb_ch_out_array (1) => data_switch_arrow_array(j-1,0),
  133.                                                
  134.                                                 chsel_data_in_array(3)        => data_switch_arrow_array(j,3),
  135.                                                 chsel_wrt_array_in (3)  => wrt_switch_arrow_array(j,3),
  136.                                                 arb_avl_RT_array_in(3)  => avl_RT_switch_arrow_array(j,3),
  137.                                                 arb_avl_BE_array_in(3)  => avl_BE_switch_arrow_array(j,3),
  138.                                                 chsel_avl_RT_array_out(3) => avl_RT_switch_arrow_array(y+j,0),
  139.                                                 chsel_avl_BE_array_out(3) => avl_BE_switch_arrow_array(y+j,0),
  140.                                                 arb_wrt_array_out(3) => wrt_switch_arrow_array(y+j,0),
  141.                                                 arb_ch_out_array (3) => data_switch_arrow_array(y+j,0)
  142.                                         );
  143.                                 end generate other_node1;
  144.                 end generate list_array1;
  145. end architecture;



复制代码


** Error: C:/Users/WIN7/Documents/sunjy/Net_Vhdl/Net_Top.vhd(48): (vcom-1026) Formal "chsel_data_in_array" associated individually was not in contiguous sequence.

** Error: C:/Users/WIN7/Documents/sunjy/Net_VHDL/Net_Top.vhd(49): (vcom-1026) Formal "chsel_wrt_array_in" associated individually was not in contiguous sequence.

** Error: C:/Users/WIN7/Documents/sunjy/Net_VHDL/Net_Top.vhd(50): (vcom-1026) Formal "arb_avl_RT_array_in" associated individually was not in contiguous sequence.

** Error: C:/Users/WIN7/Documents/sunjy/Net_VHDL/Net_Top.vhd(51): (vcom-1026) Formal "arb_avl_BE_array_in" associated individually was not in contiguous sequence.

** Error: C:/Users/WIN7/Documents/sunjy/Net_VHDL/Net_Top.vhd(52): (vcom-1026) Formal "chsel_avl_RT_array_out" associated individually was not in contiguous sequence.

** Error: C:/Users/WIN7/Documents/sunjy/Net_VHDL/Net_Top.vhd(53): (vcom-1026) Formal "chsel_avl_BE_array_out" associated individually was not in contiguous sequence.

** Error: C:/Users/WIN7/Documents/sunjy/Net_VHDL/Net_Top.vhd(54): (vcom-1026) Formal "arb_wrt_array_out" associated individually was not in contiguous sequence.

** Error: C:/Users/WIN7/Documents/sunjy/Net_VHDL/Net_Top.vhd(55): (vcom-1026) Formal "arb_ch_out_array" associated individually was not in contiguous sequence.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 21:43 , Processed in 0.020674 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表