| TG68 Core In Cyclone II Questions | page 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) BEGINIF 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
| |
|