Forum: FPGA, VHDL & Verilog Beginner's problem with very simple Verilog buffer

von jhin (Guest)

Rate this post
0 useful
not useful
Hey everyone,

I've got a hopefully easy to solve question.
The following Code is given:

module filter
    input                 clk,
    input                 en,
    input [31:0]          rawdata,
    output [31:0]         filtered_data
  reg [31:0]              filtered_data_q;

  assign filtered_data    = filtered_data_q;

  // filter + register
  always @(posedge clk)
    if (en)
      // Simple recursive filtering
      filtered_data_q <= filtered_data_q * 3 / 4 + rawdata / 4;
      filtered_data_q <= filtered_data_q;

This code synthesizes and simulates perfectly, just as expected.
But once I add a simple(st) buffer, nothing works:

  wire    temp;
  assign  temp = rawdata;
Additionally, I used 'temp' instead of 'rawdata' for the filter.

The result is that my complete filtered_q register is removed during 
optimization step for the following reason: "Stuck at GND due to stuck 
port data_in"

I also tried
  reg temp;
  always @ (rawdata)
    temp = rawdata;
but that did not change anything.

Any Explanations? Why does this happen?

von Uwe Bonnes (Guest)

Rate this post
0 useful
not useful
Did youb really write
and not
Do temp at max resolves to `'b1 and
1'b1 >>4
is alway 0!

von jhin (Guest)

Rate this post
0 useful
not useful
Haha, you're right!
I expected it to be a stupid mistake, not knowing it could be THAT 
stupid ... :-)
Anyway, thanks a lot for pointing it out!


von beginner (Guest)

Rate this post
0 useful
not useful
Hallo Uwe,

can you explain that is the different between

wire  and wire[31:0]   ?

thank you

von not Uwe (Guest)

Rate this post
0 useful
not useful
wire means only 1 bit
wire[31:0] means 32 bits

because verilog doesn't talk and disallow as much as vhdl, it is 
accepted to fed a 32bit vector into a 1 bit(keeping only 1 bit!).

So all other 31 bits are lost and you will never know it.
(maybe there is a warning from synthesis tool, don't know)


Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [vhdl]VHDL code[/vhdl]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]

Bild automatisch verkleinern, falls nötig
Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.