[BangPypers] One python question (from verilog)

Anand Chitipothu anandology at gmail.com
Sat Sep 20 03:47:51 CEST 2008


On Sat, Sep 20, 2008 at 4:32 AM, Deepak Patel <patel.deepak.09 at gmail.com> wrote:
> Hello all,
>
> I want to a write a method in Python to poll a register for '1' or '0'. It
> is kind of very simple in verilog, but not sure if python provides
> flexibility or not.
>
> My algorithm (kind of Verilog syntax where I can access the bits without any
> extra processing) is as follows:
>
> poll_reg ( input bit_pos, input poll_val, reg_offset)
> {
> // In this bit_pos is the position of bit in my register read which are
> being polled to become poll_val. Poll_val can be either 0 or 1.
>
>           matched = 0;
>           while (matched != 1)
>           begin
>                   read_data = read_reg(reg_offset);
>                   if (read_data[bit_pos] == poll_val)
>                   begin
>                             matched = 1;
>                    end
>                    else
>                    begin
>                              matched = 0;
>                    end
>              end
> }

This is more C-like bit operation. You need to get a mask by right
shiting 1 by bit_pos and do binary AND with the register value.

def poll_reg(bit_pos, poll_val, reg_offset):
   mask = 1 <<  bit_pos
   while read_read(reg_offset) & mask == poll_val:
       continue


More information about the BangPypers mailing list