Home   News   Concept   AMIGA-Compatible   Hardware   Forum   Questions+Answers   Pictures   Contact & Team

Welcome to the Natami / Amiga Forum

This forum is for AMIGA fans interested in the new NATAMI platform.
Please read the forum usage manual.



All TopicsNewsQAFeaturesTalkTEAMLogin to post    Create account
Welcome to the Natami lounge.
Meet new AMIGA friends here and enjoy having a friendly chit chat.

TG68 Core In Cyclone II Questionspage  1 2 3 4 5 6 7 8 9 10 
Igor Majstorovic

Posts 51
28 Jan 2011 13:18


I want to use TG68 core, and i execute it in Altera Quartus and all works fine.
  My questions are.
  1. What are differences between Cyclone II and Cyclone III And Spartan III related to speed and compatibility?
  2. I want to use this board based on EP2C5T144 Altera Cyclone II
  Can i do something using this board
EXTERNAL LINK 
  3. Can i use some other boards based on some other FPGA.
 
  4. Can it be done to connect SDRAM controller to TG68.

Deep Sub Micron
Germany
(MX-Board Owner)
Posts 567
29 Jan 2011 11:19


igor majstorovic wrote:

I want to use TG68 core, and i execute it in Altera Quartus and all works fine.

We don't use TG68 so I can only make some general statements.

igor majstorovic wrote:

  My questions are.
  1. What are differences between Cyclone II and Cyclone III And Spartan III related to speed and compatibility?

I don't see a significant speed difference when switching between Cyclone II and Cyclone III. But this is something you can easily test yourself by selecting different target device and run synthesis again.
I have not done a speed compare between Altera and Xilinx.
Both Quartus and ISE should be able to use the same source. There are some exceptions like PLLs. And it would be good to have an eye on the ram block synthesis and usage.

igor majstorovic wrote:

  2. I want to use this board based on EP2C5T144 Altera Cyclone II
  Can i do something using this board
  EXTERNAL LINK 

It has no RAM on board but for your softcore you probably want some external RAM on board. This board requires a JTAG cable. Other boards have USB to JTAG converter on board. And the I/Os are not 5V. To use it as a 5V 68k replacement some additional level translators are required. If you can live with this and your design fits then it is a nice little thing.

igor majstorovic wrote:
 
  3. Can i use some other boards based on some other FPGA.

Sure, why not.

igor majstorovic wrote:
 
  4. Can it be done to connect SDRAM controller to TG68.

Yes, I think this can be done. But it is quite some work.


Igor Majstorovic

Posts 51
29 Jan 2011 14:58


Thank you for your reply. I know that this board on ebay dont have USB to JTAG converter on the board. But this is the main reason i want this board. Because with that board i get USB blaster cable and i can use that cable for other projects. Can suggest me how to solve I/O 5V problem because i have some ideas but i m not sure.

Gunnar von Boehn
Germany
(Moderator)
Posts 5775
29 Jan 2011 15:32


Please mind that the FPGA on the board is rather small.
There will not be much room in ther FPGA left once you have the TG68 put in it.
For example, I doubt that you can put an SDRAM controller and the TG68 both in the FPGA.


Wojtek P
Poland

Posts 1597
30 Jan 2011 18:25


Gunnar von Boehn wrote:

Please mind that the FPGA on the board is rather small.
  There will not be much room in ther FPGA left once you have the TG68 put in it.
  For example, I doubt that you can put an SDRAM controller and the TG68 both in the FPGA.
 

EXTERNAL LINK

Igor Majstorovic

Posts 51
30 Jan 2011 18:45


Yes i know about that.
  Here is some other problems like using level shifter for 5V to 3.3V and vice versa conversion. I was thinking of using quickswich like QS3861 or level shifter like 74ALVC164245 or something. But i have to solve number of pins and i need level shifter who have many inputs and outputs. anyone have an idea, schematics, anything...

Lord Aga

Posts 129
01 Feb 2011 19:14


Are you from Serbia by any chance ?

Igor Majstorovic

Posts 51
01 Feb 2011 22:57


No i m from Republic of Srpska(Bosnia)...

Wojtek P
Poland

Posts 1597
03 Feb 2011 18:22


igor majstorovic wrote:

Yes i know about that.
    Here is some other problems like using level shifter for 5V to 3.3V and vice versa conversion. I was thinking of using quickswich like QS3861 or level shifter like 74ALVC164245 or something. But i have to solve number of pins and i need level shifter who have many inputs and outputs. anyone have an idea, schematics, anything...

5 to 3.3V level shifting can often be done by using just series resistors. 5V logic usually have no problem to react properly to 3.3V logic levels (3.3V logic 1 levnel is still far higher than 5V logic level 0), all you need is to make sure that too high voltage won't reach 3.3V circuit and fry it.

Some 3.3V devices are 5V tolerant, but your FPGA probably not.

doesn't documentation from devices you named enough?



Igor Majstorovic

Posts 51
05 Feb 2011 16:26


Thanks, i decided to go with quickswiches but i have some other question. I dont understand something in pin planner(Quartus II), what i can do with Data_in and Data_write. Is this Data Bus D0-D15 I/O on MC68k because if it is i dont know how to assign those pins, because i have 16 Data_in and the same number od Data_write, i cant combine them to get 16 Data Bus I/O pins and then to connect it to Mc68k. I need to use 32 pins and what to do with them i cant connect it to 16 pins of Data Bus.

Gunnar von Boehn
Germany
(Moderator)
Posts 5775
05 Feb 2011 16:35


igor majstorovic wrote:

Is this Data Bus D0-D15 I/O ..

You need to add a top level which merges the IN and OUT onto the same IOS.

Igor Majstorovic

Posts 51
05 Feb 2011 16:50


Hah thank you :)

Igor Majstorovic

Posts 51
08 Feb 2011 20:31


UH again number of problems :)
I made some VHDL code for tri-state buffer.But...
When i compile TG68k code i get about 31 ADRESS BUSS pins, also 16 input, and 16 output pins. As you know I need to join those 16 in and 16 out pins to get 16 bidirectional pins for DATA BUS. I write some VHDL but i have some problems. Code generates 16 bidirectional pins as i wanted but also there are 16 input and 16 output pins, and no ADDRESS BUSS pins. As i can see my code have influence on all pins, and i just want to have influence on 16 in and 16 out pins to join them in 16 bidirectional pins using tri-state buffer.
Here is my code:
-----------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY data_bus IS
PORT(
data_bus : inout STD_LOGIC_VECTOR (15 downto 0);
oe : IN STD_LOGIC;
input : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
output : OUT STD_LOGIC_VECTOR (15 DOWNTO 0));
END data_bus;

ARCHITECTURE signals OF data_bus IS
signal data_in : STD_LOGIC_VECTOR (15 downto 0);
signal data_out : STD_LOGIC_VECTOR (15 downto 0);
signal data_oe : STD_LOGIC;

BEGIN
PROCESS(oe)
BEGIN
IF oe = '1' THEN
data_bus <= data_out;
ELSE
data_bus <= "ZZZZZZZZZZZZZZZZ";
data_in <= data_bus;

END IF;
END PROCESS;
END signals;
-----------------------------

Marcel Verdaasdonk
Netherlands

Posts 3991
08 Feb 2011 20:51


hm simplest you can do for a direction flow is two AND gates and a inverter.



Megol .

Posts 690
09 Feb 2011 15:44


igor majstorovic wrote:

UH again number of problems :)
  I made some VHDL code for tri-state buffer.But...
  When i compile TG68k code i get about 31 ADRESS BUSS pins, also 16 input, and 16 output pins. As you know I need to join those 16 in and 16 out pins to get 16 bidirectional pins for DATA BUS. I write some VHDL but i have some problems. Code generates 16 bidirectional pins as i wanted but also there are 16 input and 16 output pins, and no ADDRESS BUSS pins. As i can see my code have influence on all pins, and i just want to have influence on 16 in and 16 out pins to join them in 16 bidirectional pins using tri-state buffer.

Haven't used VHDL for a while and have no idea about TG68K but...

architecture signals of data_bus is
begin
  data_bus <= input when oe='1' else "ZZZZZZZZZZZZZZZZ";
  output <= data_bus;
end;

?

Deep Sub Micron
Germany
(MX-Board Owner)
Posts 567
09 Feb 2011 17:59


You probably already solved your problem with above solution. This is just about what I think what caused the trouble with your solution:

igor majstorovic wrote:

  PROCESS(oe)
  BEGIN
    IF oe = '1' THEN
      data_bus <= data_out;
    ELSE
      data_bus <= "ZZZZZZZZZZZZZZZZ";
      data_in <= data_bus;
    END IF;
  END PROCESS;

Well the process statement has only "oe" in list of activation signals. So this might confuse the synthesis program and introduce a latch (in FPGA latches are bad and flipflops should be used). It is better to add all signals (a process reads) into activation list or use a clock by waiting on clock rising edge.

There is another pitfall you trapped into. The data_in is only assigned in the else condition which also introduces a latch.
Better always assign to output signals (or use a clock).

Since the latch is not possible in an IO-cell, the latch will be implemented using LE. But since these LE have no tristate buffer, the tristate bus will probably get replaced by a MUX structure, and that kind of fails.
I think there were many warnings in the synthesis log file.

The solution with concurrent assignments above looks a lot better.


Igor Majstorovic

Posts 51
09 Feb 2011 21:42


Yes yes, thanks. Solution that propose Megol . works better. You are right about a lot of warnings in log file. Now code is working but there is no point of this code because i did not connect it to TG68 code. I generated components from TG68 code and import that components to my code, then i was trying to use port map or something but it did not work. Then i was thinking why cant i use some parts of my code and import that code directly into TG68. Here is what i did:
In entity TG68 with other i add data_bus.
  entity TG68 is
    port(
  data_bus : inout STD_LOGIC_VECTOR (15 downto 0)
        );
end TG68;
then after components of tg68_fast i add one more signal
signal data_oe : STD_LOGIC;
then at the bottom of file i was trying to add PROCESS
PROCESS (data_bus)
  BEGIN

IF data_oe = '1' THEN
...
...
...
But all i get is some errors like  Warning: Bidir "data_bus[9]" has no driver
I m going nowhere again...
Then i was trying to use TG68 generated components. In this code is missing something because i got only 16 pins. This code is not onnected to TG68. I know that i need to use something like
TG68_inst: TG68
  PORT MAP (
I m going crazy with this. More then 7 days i m working with this all day and night.
This is the code for now
-----------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY data_bus IS
PORT(
data_bus : inout STD_LOGIC_VECTOR (15 downto 0)
);
END data_bus;

ARCHITECTURE signals OF data_bus IS
COMPONENT TG68
  PORT
  (
  clk  :  IN STD_LOGIC;
  reset  :  IN STD_LOGIC;
  clkena_in  :  IN STD_LOGIC;
  data_in  :  IN STD_LOGIC_VECTOR(15 DOWNTO 0);
  IPL  :  IN STD_LOGIC_VECTOR(2 DOWNTO 0);
  dtack  :  IN STD_LOGIC;
  addr  :  OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
  data_out  :  OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
  as  :  OUT STD_LOGIC;
  uds  :  OUT STD_LOGIC;
  lds  :  OUT STD_LOGIC;
  rw  :  OUT STD_LOGIC;
  drive_data  :  OUT STD_LOGIC
  );
END COMPONENT;
signal data_in : STD_LOGIC_VECTOR (15 downto 0);
signal data_out : STD_LOGIC_VECTOR (15 downto 0);
signal data_oe : STD_LOGIC;

BEGIN
data_bus <= data_in when data_oe='1' else "ZZZZZZZZZZZZZZZZ";
  data_out <= data_bus;
END signals;


Deep Sub Micron
Germany
(MX-Board Owner)
Posts 567
10 Feb 2011 22:15


EXTERNAL LINK 

Igor Majstorovic

Posts 51
15 May 2011 15:04


Thank you, but i talk to Torlus and he told me where i m going wrong. I changed my code, now it is working but i need someone for check the code because i dont trust myself :)

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity datainout is
    port(
    clk          : in std_logic;
    reset        : in std_logic;
        clkena_in    : in std_logic:='1';
 
        IPL          : in std_logic_vector(2 downto 0):="111";
        dtack        : in std_logic;
        addr          : out std_logic_vector(31 downto 0);

        as            : buffer std_logic;
        uds          : buffer std_logic;
        lds          : buffer std_logic;
        rw            : buffer std_logic;
        drive_data    : out std_logic;
        datainout : inout std_logic_vector(15 downto 0)         
        );
end datainout;

ARCHITECTURE logic OF datainout IS

    COMPONENT TG68
    PORT (
      clk          : in std_logic;
    reset        : in std_logic;
        clkena_in    : in std_logic;
        data_in      : in std_logic_vector(15 downto 0);
        IPL          : in std_logic_vector(2 downto 0);
        dtack        : in std_logic;
        addr          : out std_logic_vector(31 downto 0);
        data_out      : out std_logic_vector(15 downto 0);
        as            : out std_logic;
        uds          : out std_logic;
        lds          : out std_logic;
        rw            : out std_logic;
        drive_data    : out std_logic
        );
    END COMPONENT;
 
signal data_in : STD_LOGIC_VECTOR (15 downto 0);
signal data_out : STD_LOGIC_VECTOR (15 downto 0);

BEGIN

data_in <= datainout;

TG68_inst: TG68
    PORT MAP (
        data_in => data_in,
    data_out => data_out,
    clk => clk,
    reset => reset,
    clkena_in => clkena_in,
    IPL => IPL,
    dtack => dtack,
    addr => addr,
    as => as,
    rw => rw,
    uds => uds,
    lds => lds,
        drive_data => drive_data   
        );
   
datainout(15 downto 8) <= data_out(15 downto 8) when as = '0' and rw = '0' and uds='0' else "ZZZZZZZZ";
datainout(7 downto 0) <= data_out(7 downto 0) when as = '0' and rw = '0' and lds='0' else "ZZZZZZZZ";
END;   

Jakob Eriksson
Sweden
(Moderator)
Posts 1097
15 May 2011 16:50


You could also try to ask your question at a specialized forum such EXTERNAL LINK or EXTERNAL LINK

posts 185page  1 2 3 4 5 6 7 8 9 10