OpenCores
URL https://opencores.org/ocsvn/myhdl_lfsr/myhdl_lfsr/trunk

Subversion Repositories myhdl_lfsr

[/] [myhdl_lfsr/] [trunk/] [lfsr_logic.py] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 raineys
from myhdl import *
2
from lfsr_tap_table import *
3
import random
4
 
5
#Author: Shawn Rainey 
6
#        rainey.shawn@gmail.com
7
 
8
#init_value must not be 0
9
def get_lfsr(width=32, init_value=1):
10
 
11
    if init_value == 0:
12
        raise SystemExit("LFSR May not be instantiated with initial zero value")
13
 
14
    tap_const = intbv(0)[width:]
15
 
16
 
17
    for i in lfsr_tap_table[width]:
18
        tap_const[i-1] = 1
19
 
20
    def lfsr_module(reset, clock, lfsr_out):
21
 
22
        reg_internal = Signal(intbv(init_value)[width:])
23
 
24
        @always_comb
25
        def assign_out():
26
            lfsr_out.next = reg_internal
27
 
28
        @always_seq(clock.posedge, reset=reset)
29
        def lfsr_logic():
30
            if reg_internal[0] == 1:
31
                #use of _val here may not be forward or backward compatible
32
                #with other versions of MyHDL
33
                #works with MyHDL 0.9.0
34
                reg_internal.next = (reg_internal >> 1) ^ tap_const._val
35
            else:
36
                reg_internal.next = reg_internal >> 1
37
 
38
        return instances()
39
 
40
    return lfsr_module
41
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.