OpenCores
no use no use 1/1 no use no use
LCD screen on Plasma Cpu for spartan-3e
by theshadowx on Jun 24, 2009
theshadowx
Posts: 7
Joined: Mar 13, 2009
Last seen: Aug 24, 2017
Hi all

I've implemented the Plasma CPU on my spartan-3e starter kit , the issue is that i haven't succeeded in making the LCD screen work, i ve written in c language what was asked to do in the user guide but infortunately it doesn't work. I've noticed that the clock in this cpu is 12.5 MHz is that right?

my code in Joint piece.

thanks
RE: LCD screen on Plasma Cpu for spartan-3e
by theshadowx on Jun 26, 2009
theshadowx
Posts: 7
Joined: Mar 13, 2009
Last seen: Aug 24, 2017
please i need help, it s been more than 2 months trying to write in the lcd screen under plasma cpu core in spartan-3e , please help
RE: LCD screen on Plasma Cpu for spartan-3e
by jguillot on Jun 26, 2009
jguillot
Posts: 2
Joined: Jan 7, 2009
Last seen: Mar 1, 2011
The global clock on this board seems to be at 50Mhz but the first process you 'll find in plasma3e.vhd downscale this frequency by two. As far as I remenber during the simulation, the clock tree is therefore at 25 Mhz.

RE: LCD screen on Plasma Cpu for spartan-3e
by theshadowx on Jun 26, 2009
theshadowx
Posts: 7
Joined: Mar 13, 2009
Last seen: Aug 24, 2017
ok, thanks , but what about writing on the LCD screen
RE: LCD screen on Plasma Cpu for spartan-3e
by jguillot on Jun 26, 2009
jguillot
Posts: 2
Joined: Jan 7, 2009
Last seen: Mar 1, 2011
sorry I didn't try it yet
RE: LCD screen on Plasma Cpu for spartan-3e
by jvillar on Jun 26, 2009
jvillar
Posts: 4
Joined: Jun 9, 2008
Last seen: Nov 8, 2018
Hi!
I don't know if it will help you, but I recently published a new opencore for driving LCD character displays scompatible with Digilent's Spartan 3E SK LCD Display.

It includes a testbench ready to use with S3E SK from Digilent, so as you can compare it with your simulation results.

It can use either a memory maped interface or a wishbone compliant one.

You will find it at: http://www.opencores.org/projects/wb_lcd/


Regards!
Jose Ignacio Villar.
RE: LCD screen on Plasma Cpu for spartan-3e
by theshadowx on Jun 26, 2009
theshadowx
Posts: 7
Joined: Mar 13, 2009
Last seen: Aug 24, 2017
hi jose

thanks for yours post, i already have tried it , i have a project and in it i must use plasma cpu core so that's why i need help and also with the lcd screen and plasma cpu , i can do a lot of application
so that's the goal.
anyway thanks
RE: LCD screen on Plasma Cpu for spartan-3e
by rhoads on Jul 5, 2009
rhoads
Posts: 16
Joined: Sep 25, 2001
Last seen: Jan 11, 2023
Here are some random untested thoughts about supporting the LED pannel. In plasma_3e.vhd add the LED control signals:

LCD_E LCD_RS LCD_RW
SF_D flash_active = '1' and write_enable = '1'
else "ZZZZ" & gpio0_out(11 downto 8) & "ZZZZZZZZ" when
gpio0_out(12) = '1'
else "ZZZZZZZZZZZZZZZ";

This will permit the gpio0 register to completely control the LCD. Next add code to control the gpio0/LED signals:

static void SpinWait(int clocks)
{
int value = *(volatile int*)COUNTER_REG + clocks;
while(*(volatile int*)COUNTER_REG - value ;
}

void LcdWriteNibble(int rs, int value)
{
MemoryWrite(GPIO0_CLEAR, 0xff00); //disable LCD GPIO lines
MemoryWrite(GPIO0_OUT, (rs SpinWait(2); //wait for two 25MHz ticks
MemoryWrite(GPIO0_OUT, 1 SpinWait(12);
MemoryWrite(GPIO0_CLEAR, 1 SpinWait(2);
MemoryWrite(GPIO0_CLEAR, 0xff00); //disable LCD_E and SF_D(11 downto 8)
SpinWait(25); //wait for 1 us before next nibble
}

void LcdWrite(int rs, int byte, int delayUs)
{
LcdWriteNibble(rs, value >> 4); //upper nibble
LcdWriteNibble(rs, value & 0x0f); //lower nibble
SpinWait(delayUs * 25); //assumes 25MHz clock
}

Initialization sequence:

SpinWait(750000/2);
LcdWriteNibble(0, 3);
SpinWait(205000/2);
LcdWriteNibble(0, 3);
SpinWait(5000/2);
LcdWriteNibble(0, 3);
SpinWait(2000/2);
LcdWriteNibble(0, 2);
SpinWait(2000/2);

LcdWrite(0, 1, 1640); --clear display
LcdWrite(1, 'H', 40); --write 'H'; LCD_RS=1; wait 40us after write
LcdWrite(1, 'i', 40); --write 'i'

Steve
RE: LCD screen on Plasma Cpu for spartan-3e
by theshadowx on Jul 6, 2009
theshadowx
Posts: 7
Joined: Mar 13, 2009
Last seen: Aug 24, 2017
The problem is solved here what i ve done:


in the entity:

LCD_E : out std_logic;
LCD_RS : out std_logic;
LCD_RW : out std_logic;


in the architecture:

LCD_RS LCD_RW LCD_E

and i changed SF_D :

SF_D (15 downto 12) flash_active = '1' and write_enable = '1'
else "ZZZZ";

SF_D(11 downto 8) flash_active = '1' and write_enable = '1'
else gpio0_out(14 downto 11) when flash_active = '0'
else "ZZZZ";

SF_D (7 downto 1) flash_active = '1' and write_enable = '1'
else "ZZZZZZZ";

and the c code :

LOOK AT THE ATTACHED FILE





Thanks steve you really helped me


why not make this as an update to your project !! just proposition

theshadowx

no use no use 1/1 no use no use
© copyright 1999-2026 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.