capstone project on digital locks

Upload: being-rajat

Post on 14-Apr-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 Capstone Project on Digital Locks

    1/27

    CHAPTER 1: INTRODUCTION

    1.1 Introduction

    A combination lock is a type of lock in which a sequence of numbers or symbols is used to

    open the lock. In the real world, combinational locks are used frequently to lock up personalbelongings, lock doors, and to provide password protection for operation of devices and

    machinery. Conventionally, combinational locks have been made mechanically using physical

    rotating discs or cams, which are specially crafted to interact with some type of locking

    mechanism. The first mechanical combinational locks were designed as early as 1200 AD.

    However, these locks require a lot of precise moving parts to function correctly and have several

    flaws. With a mechanical lock, if the combination is forgotten it is most probable that the lock

    will have to be physically cut to remove the lock since the combination is unknown and cannot

    be reset. Also, many mechanical locks only have one set combination so if the password is

    compromised the entire lock must be replaced.

    The programmable combination lock is an interesting digital design problem because entering

    and checking combinations are processes that can be divided into sequential states which can be

    modelled using a finite state machine. The engineers are forced to solve a clearly defined set

    problem. If the design was 100% creative with no set design parameters then the engineers could

    stay away from any design hurdles.

    The intelligent combinational lock is a good idea for digital logic design because the digital

    combination lock has a good mix of mandatory design parameters that must be adhered to, but

    also a good amount of leeway for the designer to add personal ideas and intuition to improve the

    design of the system. This project enforces set design parameters while still allowing room for

    creativity.

  • 7/29/2019 Capstone Project on Digital Locks

    2/27

    CHAPTER 2

    2.1 Review of literature

    We implemented a digital lock using two different procedures at first but the failure of one led

    to the adoption of the other.

    The first design turned down due to faults in synchronization of the signal though we used

    FSM but wasnt helpful. So the second design was completely dependent on the FSM model

    wherein we learnt about Finite State Machines importance as well as its need and application in

    the process of designing a system. So either way we learnt about FSM as well as successfully

    implemented it through this lock.

    Next the BIST, it is built in self test was rather using complex algorithm construction but also

    was very difficult to work on so we decided that we shall provide the code or sequence that is

    randomly generated by a random code generator so that the system shall generate the output so

    we are sure enough that the lock is well in condition.

    2.2 Scope of the study (Problem Statement)

    To implement a digital combinational lock with built in self-test capabilities using Verilog

    HDL on Isim.

  • 7/29/2019 Capstone Project on Digital Locks

    3/27

    CHAPTER 3

    3.1 Objectives of the study

    The necessity of implementation of Verilog in designing high end as well as cheap cost ICs

    was our area of interest. So we came up with the idea of implementing a digital lock with FSM

    as well as BIST. We had to first learn about the details of the Verilog HDL to adopt its

    programming ways and types through which we could implement our system. Next it was

    necessary for us to learn about FSM for implementing the system or digital lock. Also we used

    the random code generator and successfully implemented testing using a random sequence of

    bits.

    3.2 Expected outcome of the study

    We designed a digital combinational lock wherein we the user enables the lock first. As soon

    as the lock is enabled the system enters into the self test mode. If the output of the lock is correct

    then the lock status goes high and user can use the lock. Else it can be determined that there

    might be a problem in the IC so the system keeps self testing itself.Then he enters the code or to

    say the combination into the lock, the lock checks for the combination and returns the output

    whether the entered code is correct or not. Now the user gets a choice either check for

    combination or change the combination. Now if the user chooses to check the combination the

    lock shows the correct output or wrong output for given period of time only. Else if the user

    changes the combination the lock is again set for self testing. Also a hex output is connected to

    the lock to predetermine which state the lock is in.

    4.3Preliminary research work done

    The necessary components we should know to implement the project with least number of

    flaws, for our project, are

    Finite State Machine (FSM)Built In Self Test (BIST)

    These components are have been described briefly further in the chapter. These components

    were necessary to design the project because any other approach would have made the design

  • 7/29/2019 Capstone Project on Digital Locks

    4/27

    either complex or lead us to unknown outputs. As our project involved a lot of synchronization

    of the input as well as outputs and implementation through Moore machine so we used the FSM.

    Also built in self capabilities are to be realized it is necessary to have a clear perception about it.

    4.3.1 Finite State Machine

    Basically a FSM consists of combinational, sequential and output logic. Combinational logic

    is used to decide the next state of the FSM, sequential logic is used to store the current state of

    the FSM. The output logic is a mixture of both combo and seq. logic as shown in the figure

    below.

    FIG: 2.1 Output of combinational and sequential logic

    Moore machines are very useful because their output signals are synchronized with the clock.

    No matter when input signals reach the Moore Machine, its output signals will not change until

    the rising edge of the next clock cycle. This is very important to avoid setup timing violations.

    For example, if a Mealy machines input signal(s) changes sometime in the middle of a clock

    cycle, one or more of its outputs and next state signals may change some time later. Some time

    later might come after the setup time threshold for the next rising edge. If this happens, the

    registers that will hold the FSMs next state may receive garbage, or just incorrect inputs.

    Obviously, this amounts to a bug(s) in your FSM.

    The trade-off in using the Moore machine is that sometimes the Moore machine will require

    more states to specify its function than the Mealy machine. This is because in a Moore machine,

    output signals are only dependent on the current state. In a Mealy machine, outputs are

    dependent on both the current state and the inputs.

  • 7/29/2019 Capstone Project on Digital Locks

    5/27

    4.3.2 Built In Self Test

    Built-in Self Test, or BIST, is the technique of designing additional hardware and software

    features into integrated circuits to allow them to perform self-testing, i.e., testing of their own

    operation (functionally, parametrically, or both) using their own circuits, thereby reducing

    dependence on an external automated test equipment (ATE). BIST is a Design-for-Testability

    (DFT) technique, because it makes the electrical testing of a chip easier, faster, more efficient,

    and less costly. The concept of BIST is applicable to just about any kind of circuit, so its

    implementation can vary as widely as the product diversity that it caters to.

    It can be represented in the following diagram.

    FIG.2.2: Block Diagram of BIST

    The sequence generator generates a sequence which is fed to the original circuitry. According

    to the input the output is tested to define whether the given circuitry is having errors or not.

    4.3.3 Verilog and Xilinx

    Verilog:

    Verilog is a Hardware Description Language; a textual format for describing electronic

    circuits and systems. Applied to electronic design, Verilog is intended to be used for verification

    through simulation, for timing analysis, for test analysis (testability analysis and fault grading)

    and for logic synthesis.

    The Verilog HDL is an IEEE standard - number 1364. The first version of the IEEE standard

    for Verilog was published in 1995. A revised version was published in 2001; this is the version

    used by most Verilog users. The IEEE Verilog standard document is known as the Language

    Reference Manual, or LRM. This is the complete authoritative definition of the Verilog HDL.

    SequenceGenerator

    Present

    Circuitary to

    be tested

    Outputcomparasion

  • 7/29/2019 Capstone Project on Digital Locks

    6/27

    A further revision of the Verilog standard was published in 2005, though it has little extra

    compared to the 2001 standard. SystemVerilog is a huge set of extensions to Verilog, and was

    first published as an IEEE standard in 2005.

    IEEE Std. 1364 also defines the Programming Language Interface, or PLI. This is a collection

    of software routines which permit a bidirectional interface between Verilog and other languages

    (usually C).

    Note that VHDL is not an abbreviation for Verilog HDL - Verilog and VHDL are two

    different HDLs. They have more similarities than differences, however.

    Xilinx:

    The Xilinx Integrated Software Environment (ISE) is a powerful and complex set of tools.

    Xilinx ISE is a software tool produced by Xilinx for synthesis and analysis of HDL designs,

    which enables the developer tosynthesize ("compile") their designs, perform timing analysis,

    examine RTL diagrams, simulate a design's reaction to different stimuli, and configure the target

    device with the programmer.

  • 7/29/2019 Capstone Project on Digital Locks

    7/27

    CHAPTER 3: METHODOLOGY

    3.1 Introduction

    Present digital locking system have the capability to reset the password in case the present

    password gets compromised but most of these locks can malfunction without the knowledge of

    the user so we introduced the built in self testing capability into the system. Thus it was

    necessary for us to design the system with the built in self test capabilities so that the user knows

    whether the lock is functioning properly or not. So we used a random sequence generator of 4

    bits that generated the output that was used for testing of the lock with the help of finite state

    machine used to control the timing and the signals.

    There were two fundamental ways to design a programmable combinational lock using digital

    logic to create a digital system. The first strategy was to create a digital combination lock by

    creating a finite state machine that is an enormous if-tree, which moves from designated state to

    designated state based on timing and user inputs. The second strategy was to use a set of registers

    to store data from users and make comparisons with the predefined key registers that are

    reprogrammable. Since the design should be more straightforward and easier to tweak or make

    modifications and additions to the system, we used the second strategy.

    3.2 Algorithm

    An intelligent combinational lock design for the specifications of this class should be

    reprogrammable, have a timeout feature, a lockout feature, and a self-check or test feature [5]. It

    is important to note that whenever the key is changed the self testing is performed and as well as

    when the system is started. The user will be allowed to enter the code only if the lock status is

    high. The performing of the task to obtain the correct output can be direct but a number of risks

    have to be looked into while designing a system so we took care of a number of points and

    designed the following system as shown in the flowchart that has been implemented by the

    following algorithm :-

    As soon as the system is started the lock is tested for correct performance. If it fails aretest is performed until the system passes the test.

  • 7/29/2019 Capstone Project on Digital Locks

    8/27

    The user enters a combination that is of four numbers. Until the key is entered, that is the combination of four keys is entered, the lock does not

    process further.

    On entering the correct combination we have two choices either to open the lock or tochange the code. (Only if we enter the correct code we get to make the changes in the

    combination.)

    On changing the password the lock is self-tested again else the lock is opened if the otheroption is opted.

    Now if the combination is entered, correct or wrong, the status goes high at given pins fora predefined period of time and then resets itself.

  • 7/29/2019 Capstone Project on Digital Locks

    9/27

    3.3 System flowchart

    START

    Built In Self Test Mode

    NOFAULT IN

    LOCK

    YES

    LOCK CONDITION

    OK

    YES

    NO

    NO

    Change Lock

    Code

    Check Value

    Change

    Enter Lock Code

    Lock Code

    Match

    YES

    Display Input

    Code Matched

    or Not

    Lock Status

  • 7/29/2019 Capstone Project on Digital Locks

    10/27

    3.4 Logical diagram

    Inputs

    Lock Status

    Lock open

    Output

    Control

    Counter

    Comp

    4x4 bit

    Comp

    2 bit

    Register

    Mux

    Key

    Register

    BIST Encoder

  • 7/29/2019 Capstone Project on Digital Locks

    11/27

    The following block diagram defines the module of the combinational lock that we have

    implemented using Verilog HDL. The user has 10 buttons that are used to enter the code that is

    0-9, a reset pin to reset the system, a c pin used for changing the combination and the clock

    signal clk that is used for controlling the sequential circuitry and also used for synchronizing.

    Self Test Mode:-

    The following mode is selected as soon is the system is started or whenever the combination

    is changed. In the following mode user inputs are not considered. Until the lock generates an ok

    status the system does not enter the user mode.

    User Mode:-

    The following mode is selected whenever the lock status is ok. In the following mode the

    random code generator is disabled. The user gets two choices that is one where it performs in

    normal mode wherein the entered combination is correct or not. The next choice is to change the

    combination which is only allowed after the entered combination is correct.

    The block diagram details:-

    Encoder: - The encoder used in the circuit is simply for the purpose of converting each numberpressed on the keyboard into its BCD format for easier storage and calculation. Its output is in

    BCD format that is used either to store the input lock key or for the change in key.

    Multiplexer: - It is used for selecting either encoder input or random code generator input to bestored into the register. The selection lines input is decided based on the state of the finite state

    machine

    Comparators: - Two types of comparator are used out of which one is for simply comparing theinput combination and the correct combination. The other is for comparing the lock module

    output and the BIST module output for faults in lock.

    Counter: - It is used to count the clock cycles for timing, to control the output. Register: - The use of 4x4 bit register in our system is to store the user entered code in BCD

    format for comparing purposes. As BCD formatted numbers are of four bits and our lock has a

    combination of four numbers so 4x4 bit register is required. It is also used to store the real key

    combination and the code generated by the BIST.

  • 7/29/2019 Capstone Project on Digital Locks

    12/27

    Output Control: - It is used to control the output timing as the lock shouldnt be open for morethan given period of time. So this module is used to implement the timeout feature into our

    system.

    BIST: - It was necessary to have this module implemented so that our idea of self testing systemcould be incorporated into this system. But a simple random sequence was not enough to

    complete the system. We also needed to store the generated code so we combined the module

    with the register module to store the generated output. But the real purpose was to test the

    system so we stored the generated code into the users register. The value generated is stored

    in register of the BIST as well as the user input register and compared to the stored

    combination. Figure below shows the block diagram of the BIST module.

    3.5 CODING

    3.5.1 FSM

    For carrying out FSM we will need a way to express the following in Verilog:

    1. A state encoding for each state.

    2. A mechanism for keeping track of the current state.

    3. Transitions from state to state.

    4. Output values based on the current state.

    We will construct the FSM one step at a time.

    3.5.1.1 Creating a State Encoding

    We will create our state encoding with Verilog parameters. Parameters are symbolic constants

    with either global (given by the Verilog keyword parameter) or module (localparam) scope.

    Because we only want our state encoding to be visible to the other modules other than the

    Original Key

    Random Sequence

    Generator

    Register

    Comp

    4x4 bit

    Output

  • 7/29/2019 Capstone Project on Digital Locks

    13/27

    module in which we will write the FSM, we will use parameter. With this in mind, we can

    specify the comp module. In the comp module, the 3b notation indicates that the number

    specified is in the binary radix. If we were to use 3d, the encoding would look like simple as we

    shall declare states with decimal values. Both implementations are equivalent. Base 10, is

    typically easier to work on so we use it. Because this FSM has 6 total states, we must allocate 3

    bits to specify the encoding (hence 3bas opposed to 2b or 4b. This is extremely important. If

    we specify too few bits for our state encoding, Verilog shall not warn us. In fact, when

    synthesized, each state will only get as many bits as you provide. For example, if STATE_4 was

    specified like this: STATE_4 = 2b00, STATE_4 would be specified as 00, the bottom 2 bits of

    what was intended, namely 100.

    3.5.1.2 Keeping Track of the Current State

    We have several options in how to store the current state of our FSM. Though we thought that

    the module itself shall decide the present and the next state shall be stored in it at the same time

    in the code as we have used defining anotheralways block to assign the present state the next

    state as shown.

    always @ (posedge clk)

    begin

    state1

  • 7/29/2019 Capstone Project on Digital Locks

    14/27

    re=1

    S2

    rst=1,r=0re=0

    re=1

    S3

    rst=1,r=0

    re=0

    re=1

    re=1

    S4

    rst=1,r=1re=0

    S5

    rst=x,r=0rin=0

    S0

    rst=0,r=0 e=0

    e=1

    S1

    rst=1,r=0re=0

    rin=1

  • 7/29/2019 Capstone Project on Digital Locks

    15/27

    3.5.1.4 Outputting Values Based on the Current State

    The final step in specifying a Moore FSM is assigning output values based on Current State.

    assign hex_display = {1'b0,state1};

    Here we use assign to assign output. Also we provide the hex code state output to see it on

    display or connect external peripheral device.

    Functionality

    A sophisticated design strategy is utilized in this project that is to store the combination in

    registers and then compare the register containing the user input combination with the register

    containing the programmed combination to determine whether the lock should be unlocked.

    Finite state machines are implemented to control the timing and order of processes in the digital

    system.

    As soon as the lock starts it is in self test mode where the combinations are generated by the 4-bit

    random sequence generator. The code is compared to the stored code generating the correct or

    erroneous output. If the lock module also generates the same output then the lock status is set

    high making it available for the users. Else the module will keep self testing itself. Now when the

    user enters the combination it is verified. If the entered combination is correct then the system

    monitors the C signal for changing the key combination. If the value on signal C is asserted then

    the user enters the new combination that is stored and the system is self tested again. Else the

    system performs normally to generate an output showing the combination entered is correct or

    not. The output is available only for a number of clock cycles so as to have a timeout feature.

  • 7/29/2019 Capstone Project on Digital Locks

    16/27

    CHAPTER 4: RESULT ANALYSIS

    4.1 Introduction

    To implement a design in Verilog HDL we need to design using blocks or modules. So we did

    the implementation using modules and finally combined all the basic module to form one moduleat the end called module lock.

    4.2 Preliminary experimental work done

    4.2.1 MODULE HDD

    The following module has been used for storage purpose as it contains 4 x 4 registers that is 16

    registers used to store the combination of 4 numbers in BCD format. This register had been

    instantiated twice, once for the user combination and the other for the BIST combination.

  • 7/29/2019 Capstone Project on Digital Locks

    17/27

    We have used the re signal and rst signal for synchronizing purposes. Also the r signal has

    been used for denoting that the combination has been successfully stored into the registers.

    The following represents the state diagram of the module hdd wherein the states have transition

    based on input and the outputs generated depending on the states.

    re=1

    S2

    rst=1,r=0re=0

    re=1

    S3

    rst=1,r=0

    re=0

    re=1

    re=1

    S4

    rst=1,r=1

    re=0

    S5

    rst=x,r=0

    rin=0

    S0

    rst=0,r=0e=0

    e=1

    S1

    rst=1,r=0

    re=0

    rin=1

  • 7/29/2019 Capstone Project on Digital Locks

    18/27

    This state diagram could be explained as follows:-

    If the system is enabled then move to next state (S1) else remain in same state (S0). If there is an input then the re pin needs to go high moving to next state (S2) else it

    remains in same state (S1). The rst signal goes high denoting that data has been

    received.

    If there is an input then the re pin needs to go high moving to next state (S3) else itremains in same state (S2). The rst signal goes high denoting that data has been

    received.

    If there is an input then the re pin needs to go high moving to next state (S4) else itremains in same state (S3). The rst signal goes high denoting that data has been

    received. If there is an input then the re pin needs to go high moving to next state (S5) else it

    remains in same state (S4). The rst signal goes high denoting that data has been

    received. Also the r signal goes high representing that the combination has been

    successfully received.

    Now in the system resets the r signal in this state and remains in this state (S5) until itreceives a reset signal rin. On receiving a rin signal the system goes back to first state

    (S0).

    The output generated is as follows:-

  • 7/29/2019 Capstone Project on Digital Locks

    19/27

    MODULE STREG

    This module is used for storing the key combination. It has two modes of operation. First is

    normal where it provides the key combination on Q1,Q2,Q3,Q4 pins. Next is key combination

    change mode which is activated as soon as a pulse signal is applied at c pin.

    Now if we see the state machine diagram as shown, we may see that there are two states

    As soon as the system is started the default combination 9999 is provided at the outputthat is each Q1, Q2, Q3, Q4 will have a value 9 at the output.

    Now if the c signal is sent then we move to next state (S2).which internally has a numberof states to change the stored combination replacing it with a new combination.

    As soon we enter the state S2 a new state is started within. If the system is enabled then move to next state (S11).

  • 7/29/2019 Capstone Project on Digital Locks

    20/27

    re=0

    S13

    rst=1,r=0re=0

    re=1

    S14

    rst=1,r=0re=0

    re=1

    re=1

    S15

    rst=0,r=0

    S11

    rst=1,r=0e=0

    re=1

    S12

    rst=1,r=0

    S2

    S1 c=0

    c=1

  • 7/29/2019 Capstone Project on Digital Locks

    21/27

    If there is an input then the re pin needs to go high moving to next state (S12) else itremains in same state (S11). The rst signal goes high denoting that data has been

    received.

    If there is an input then the re pin needs to go high moving to next state (S13) else itremains in same state (S12). The rst signal goes high denoting that data has been

    received.

    If there is an input then the re pin needs to go high moving to next state (S14) else itremains in same state (S13). The rst signal goes high denoting that data has been

    received.

    If there is an input then the re pin needs to go high moving to next state (S15) else itremains in same state (S14). The rst signal goes high denoting that data has been

    received. Also the r signal goes high representing that the combination has been

    successfully received.

    As soon we enter state S15 the signal r goes low and the next state is S11. But theouter state moves to state S1 so again the newly stored combination is given at the output.

    The following can be seen as the output of the module

  • 7/29/2019 Capstone Project on Digital Locks

    22/27

    MODULE BISTHD

    This module is a combination of 2 modules

    1. Random Sequence Generator2. HDD

    We have already seen the module HDD and its working and now we shall be looking at the

    LFSR. An LFSR is a shift register that, when clocked, advances the signal through the register

    from one bit to the next most-significant bit. Some of the outputs are combined in exclusive-OR

    configuration to form a feedback mechanism. A linear feedback shift register can be formed by

    performing exclusive-OR on the outputs of two or more of the flip-flops together and feeding

    those outputs back into the input of one of the flip-flops. So in our project we have feedback

    outputs LSB and second last MSB.

    Now we have interfaced the LFSR with HDD so as to store the generated code into registers for

    performing the test. Also the generated code is sent to user combination storage register

  • 7/29/2019 Capstone Project on Digital Locks

    23/27

    The following output was obtained on implementation of the bisthd module

  • 7/29/2019 Capstone Project on Digital Locks

    24/27

    MODULE ENCODER

    This module is used to convert the single bit input to binary representation of the number. For eg.

    if the input signal at a pin connected to button 9 goes high then the encoder generates the

    output 1001 that is the binary representationof the 9.

    MODULE COMP

    This module is

  • 7/29/2019 Capstone Project on Digital Locks

    25/27

    used for comparing the combinations and generating either high signal co if the output is

    correct or high signal at eo if the combinations dont match.

  • 7/29/2019 Capstone Project on Digital Locks

    26/27

    MODULE COMP2B

    This module is used to compare the outputs generated by BIST comparator and the other

    comparator.

    MODULE MUX

    This module is used for interfacing the user combination storage register with the encoder input

    as well as BIST input depending on the state of the lock.

  • 7/29/2019 Capstone Project on Digital Locks

    27/27

    MODULE LOCK

    This is the module where all the above modules have been combined as well as synchronized by

    signals to generate the required output.