Go Back   Velocity Reviews > Newsgroups > VHDL
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

VHDL - Control Register implementation

 
Thread Tools Search this Thread
Old 10-28-2004, 06:19 AM   #1
Default Control Register implementation


I have a 8bit control register that in a PLD that resides at 0x330 on
an ISA bus.

I want to be able to have some bits in the control register read-only,
read/write, and write-only.

I have something like this

process (IOR)
begin
if (Falling_edge(IOR) and CRS = '0') then
-- Place the Control register onto the databus but ensure
the write-only
-- Data is correct
SD <= (reg and "11111110");
end if;
end process;

process (IOW)
begin
if (Falling_edge(IOW) and CRS = '0') then
-- Read the data from the databus but don't write over the read-only
bits
reg(4) <= SD(4);
reg(3) <= SD(3);
reg(2) <= SD(2);
reg(1) <= SD(1);
reg(0) <= SD(0);
end if;
end process;

However, doing it this way means that if I write data to the Data-bus I
need to tri-state the databus somehow? How can I do this/ when and
where???

Thanks



gommo
  Reply With Quote
Old 10-28-2004, 07:05 AM   #2
rickman
 
Posts: n/a
Default Re: Control Register implementation
gommo wrote:
>
> I have a 8bit control register that in a PLD that resides at 0x330 on
> an ISA bus.
>
> I want to be able to have some bits in the control register read-only,
> read/write, and write-only.
>
> I have something like this
>
> process (IOR)
> begin
> if (Falling_edge(IOR) and CRS = '0') then
> -- Place the Control register onto the databus but ensure
> the write-only
> -- Data is correct
> SD <= (reg and "11111110");
> end if;
> end process;
>
> process (IOW)
> begin
> if (Falling_edge(IOW) and CRS = '0') then
> -- Read the data from the databus but don't write over the read-only
> bits
> reg(4) <= SD(4);
> reg(3) <= SD(3);
> reg(2) <= SD(2);
> reg(1) <= SD(1);
> reg(0) <= SD(0);
> end if;
> end process;
>
> However, doing it this way means that if I write data to the Data-bus I
> need to tri-state the databus somehow? How can I do this/ when and
> where???


This is another example of how trying to write HDL code is not a good
way to design hardware. First picture the hardware you want to
describe. Then describe it with the language. You have made at least
two major mistakes that I have spotted quickly. You have an idea about
the problem with the tristate. You need to have three busses, an IO bus
with is the actual pins of the device. This is connected to an input
bus by a simple assignment and an output bus by a tristate conditional.

-- IOR is low true?
SD <= (others => 'Z') when (CSR = '0' and IOR = '0') else outdata;

outdata is assigned from the bits you want to be able to read. You
don't need to and, just pick off the bits you want. And don't put this
in a clocked process. The conditional above will handle the gating.

outdata <= reg(7 downto 1) & '0'

indata is used in the clocked process to set reg. If IOW is low true,
the rising edge is typically used to clock the data since that gives the
most setup time, but I don't know your timing issues.

reg(4 downto 0) <= SD (4 downto 0);

--

Rick "rickman" Collins


Ignore the reply address. To email me use the above address with the XY
removed.

Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design URL http://www.arius.com
4 King Ave 301-682-7772 Voice
Frederick, MD 21701-3110 301-682-7666 FAX


rickman
  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
implementation of collapsible panel control in asp.net bhawneshkumar Software 0 07-17-2009 06:38 AM
Mind Control and CIA'S BOURNE IDENTITY PLOT soleilmavis@gmail.com DVD Video 2 08-03-2007 09:54 PM
Writing Register code in vhdl amirster Hardware 2 06-11-2007 03:22 PM
Ajax Atlas not working in User Control faiq Software 0 09-16-2006 08:28 AM
FS: JP1 cable to program your universial remote control, now youcan control anything you want! Mike DVD Video 0 07-15-2005 02:46 AM




SEO by vBSEO 3.3.2 ©2009, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46