Re: Additional Hardware Module with Xilinx MicroBlaze Processor



Hi,

Then it should be a direct match for the FSL interface.
If MicroBlaze executes a 'put' instruction , it will not write until the
FSL_M_Full flag is '0' and when it write it will set the FSL_M Write high
for one clock cycle.
MicroBlaze have plenty of options for the FSL instructions, you can get all
about them in the reference manual.

Göran

"Ray D." <ray.delvecchio@xxxxxxxxx> wrote in message
news:693f947e-929e-49f6-939d-d834e0048121@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
On Jul 21, 2:36 am, "Göran Bilski" <goran.bil...@xxxxxxxxxx> wrote:
Hi,

Depending a little on how your busy signals work, you might just hook up
your module to the FSL interface on MicroBlaze.
Your busy signal needs be high when it can't accept a new word even when
there is no attempt to write to the module.
MicroBlaze will also just do one cycle write so your module needs to
accept
a new word in one clock cycle when busy is low.

Connect:
din(7 downto 0) -> FSL0_M_Data(24 to 31)
din_ready -> FSL0_M_Write
busy -> FSL0_M_Full

You need to enable FSL Interfaces to MicroBlaze with the parameter
C_FSL_LINKS (set it to 1)
You can write to the fsl interface with the function putfslx, you can read
more about this function in the document "OS and Libraries Document
Collection".

Göran

"Ray D." <ray.delvecc...@xxxxxxxxx> wrote in message

news:276dce6d-c9ed-4937-95ea-e3c86ff3656a@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Hey all,

I have a Xilinx Spartan-3E starter board, and I'm implementing a
MicroBlaze processor on the FPGA. I would also like to use the LCD
which is on board, and I have already developed a hardware module that
takes care of initialization and printing to the LCD. The interface
is shown below:

entity LCD_top is
Port (
clk : in STD_LOGIC;
reset : in STD_LOGIC;

din : in STD_LOGIC_VECTOR (7 downto 0);
din_ready : in STD_LOGIC;
busy : out STD_LOGIC;

LCD_D : out STD_LOGIC_VECTOR (11 downto 8);
LCD_E : out STD_LOGIC;
LCD_RS : out STD_LOGIC;
LCD_RW : out STD_LOGIC

);
end LCD_top;

I really would like to instantiate this module along with the
processor core. My question is this - how would I go about
interfacing this with the MicroBlaze processor internal to the FPGA?
What I would like to do is define a GPIO port on the processor to
connect to the din, din_ready and busy lines of the LCD module, but I
keep getting the following error:

ERROR:MDT - INST:LCD_data_status_10Bit PORT:GPIO_IO
CONNECTOR:LCD_data_status_10Bit_GPIO_IO - C:\EDK_Test_LCD
\system.mhs line 150
- connection is not connected to an external port!
MPD subproperties IOB_STATE=BUF|REG or THREE_STATE=TRUE require
that the port
be connected directly to an external port.

Is there any way to work around this? I realize I could just connect
the LCD to the GPIO directly and write software drivers, but I'm
trying to avoid that because I already have the hardware module in
place and working smoothly. It will also be nice to have this
separate module so that it does the work of printing to the LCD, and
the processor itself can stay busy with other more important jobs.

Also, is there an easier way to add another hardware module without
manually editing the generated VHDL files for the core? I'm not sure
if you can do that within Platform Studio.

Any advice would be much appreciated, thanks!

Ray

That is how the module works so I'll have to try some of these
options! The busy signal is set high the entire time data is being
written to the LCD. Originally I had a module "program.vhd" that
controlled the LCD module along with a keyboard module that we we had
in place for user input. Within program.vhd, I implement a state
machine and check if the busy signal is high before writing to the
LCD. If busy = 0, then I set din_ready high and set the 8-bits of
data. This is buffered within the LCD module and you only need to
hold din_ready for a single cycle to write to the LCD. The LCD is
connected over a 4-bit interface to the FPGA and this is taken care of
within the LCD module. When the writing operation begins busy is set
to '1' until complete.

Ray


.



Relevant Pages

  • Re: Additional Hardware Module with Xilinx MicroBlaze Processor
    ... MicroBlaze have plenty of options for the FSL instructions, ... a new word in one clock cycle when busy is low. ... I would also like to use the LCD ... What I would like to do is define a GPIO port on the processor to ...
    (comp.arch.fpga)
  • Re: Additional Hardware Module with Xilinx MicroBlaze Processor
    ... Depending a little on how your busy signals work, ... MicroBlaze will also just do one cycle write so your module needs to accept ... You can write to the fsl interface with the function putfslx, ... What I would like to do is define a GPIO port on the processor to ...
    (comp.arch.fpga)
  • Re: Additional Hardware Module with Xilinx MicroBlaze Processor
    ... Depending a little on how your busy signals work, ... MicroBlaze will also just do one cycle write so your module needs to accept ... You can write to the fsl interface with the function putfslx, ... I would also like to use the LCD ...
    (comp.arch.fpga)
  • Re: uC and LCD (or uC and LCD controller) interfacing
    ... If you are thinking about a text only LCD I have done an interface to ... the MicroBlaze uC. ... Find out more from my blog: http://svenand.blogdrive.com/archive/62.html ...
    (comp.arch.embedded)