Search code examples
verilogfpgalcdintel-fpga

What does this line mean in verilog?


From http://www.johnloomis.org/digitallab/lcdlab/lcdlab3/lcdlab3.qdoc.html

How can I change DATA_BUS so that it is not using inout.

// BIDIRECTIONAL TRI STATE LCD DATA BUS

assign DATA_BUS = (LCD_RW_INT? 8'bZZZZZZZZ: DATA_BUS_VALUE)

Solution

  • This is a continuous assign statement to DATA_BUS using a ternary operator.

    assign DATA_BUS = (LCD_RW_INT? 8'bZZZZZZZZ: DATA_BUS_VALUE)
    

    The ternary operator could be thought of as a mini if-else statement. In english it could be translated like so assuming LCD_RW_INT is a 1 bit flag:

    if LCD_RW_INT == 1'b1: 
        DATA_BUS = 8'bZZZZZZZZ 
    else: 
        DATA_BUS = DATA_BUS_VALUE