[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