LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cores > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: galbo at gate.net<galbo@g...>
    Date: Mon Sep 3 23:04:49 CEST 2007
    Subject: [oc] I am having trouble editing a signal in a sub program IN VHDL
    Top
    There are two places distinct blocks where reg_A is being written, this
    is not permitted. A signal can only be driven (written) from one block
    of code. That is, you have contention, there are 2 different circuits
    trying to drive reg_A.

    1) reg_A is written with "1111..." on rising clock in your unnamed
    process
    2) reg_A is written by your component ALU_test in the vlaggie
    parameter, that is vlaggie is an OUTPUT. You can't do this.

    BTW, assignment to a SIGNAL uses the symbol "<=". Your code is
    correct. The symbol ":=" is used to assign a value to a VARIABLE.

    Regards,
    Neal



    ----- Original Message -----
    From: 14345609 at sun.ac.za<14345609@s...>
    To:
    Date: Wed Aug 29 21:19:14 CEST 2007
    Subject: [oc] I am having trouble editing a signal in a sub program
    IN VHDL

    > I declared a signal called reg_A. I then want to edit the signal in
    > another subprogram. I basically want reg_A to be one of my inputs
    > to a
    > sub program(ALU_test) edit reg_A in the subprogram and then I
    want
    > the output of my subprogram to change reg_A in the main program
    > (test). When I tried to do this an error occurred ("Signal
    > reg_A has
    > multiple sources"). I am not sure what to do could some one
    > please
    > help me.
    > library ieee;
    > use ieee.std_logic_1164.all;
    > entity test is
    > port ( clk : in std_logic;
    > choze : in std_logic_vector(3 downto 0);
    > data_t : in std_logic_vector(7 downto 0);
    > Outw : out std_logic_vector(7 downto 0));
    > end entity test;
    > architecture no1 of test is
    > ------------------------------------------------------------
    > component ALU_test is
    > port ( clk : in std_logic;
    > choose : in std_logic_vector(3 downto 0);
    > vlaggieIN : in std_logic_vector(7 downto 0);
    > vlaggie : out std_logic_vector(7 downto 0));
    > end component ALU_test;
    > ------------------------------------------------------------
    > signal reg_A
    > : std_logic_vector(7 downto 0);
    > ------------------------------------------------------------
    > begin
    > process (clk)
    > begin
    > if rising_edge(clk) then
    > reg_A <= "11111111";
    > end if;--if rising_edge(clk) then
    > end process;
    > r1: ALU_toets4 port map (clk,choze,reg_A,reg_A);
    >
    > Outw <= reg_A;
    >
    > end architecture no1;
    >
    > ---------------------------------------------------------------------
    > -----
    > ========================================
    > =================
    >
    > ---------------------------------------------------------------------
    > -----
    > library ieee;
    > use ieee.std_logic_1164.all;
    > use ieee.std_logic_unsigned.all;
    > entity ALU_test is
    > port ( clk : in std_logic;
    > choose : in std_logic_vector(3 downto 0);
    > vlaggieIN : in std_logic_vector(7 downto 0);
    > vlaggie : out std_logic_vector(7 downto 0));
    > end entity ALU_test;
    > architecture alu1 of ALU_test is
    >
    > begin
    > process (clk)
    > begin
    > if rising_edge(clk) then
    > case choose is
    > -----------------------------------
    > -- add
    > -----------------------------------
    > when "1000" =>
    > vlaggie <= "10101011" +
    > vlaggieIN;
    > -----------------------------------
    > -- sub
    > ----------------------------------- > when "0100" => > vlaggie <= "10100100"; > ----------------------------------- > -- maal > ----------------------------------- > when "0010" => > vlaggie <= vlaggieIN; > ----------------------------------- > when others => > vlaggie <= "00000000"; > ----------------------------------- > end case;--case kies is > > end if;--if rising_edge(clk) then > end process; > end architecture alu1; > >

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.