zoukankan      html  css  js  c++  java
  • 【原创】The solutional manual of the Verilog HDL: A Guide to Digital Design and Synthesis (2nd)—ch07II

    7. Design a negative edge-triggered D-flipflop(D_FF) with synchronous clear, active high (D_FF clears only at a negative edge of clock when clear is high). Use behavioral statements only. (Hint: Output q of D_FF must be declared as reg). Design a clock with a period of 10 units and test the D_FF.

    my answer:

    clip_image002

    clip_image004

    clip_image006

    8. Design the D-flipflop in exercise 7 with asynchronous clear (D_FF clears whenever clear goes high. It does not wait for next negative edge). Test the D_FF.

    my answer:

    clip_image008

    clip_image010

    9. Using the wait statement, design a level-sensitive latch that takes clock and d as inputs and q as output. q=d whenever clock=1.

    my answer:

    clip_image012

    clip_image014

    clip_image016

    (p.s. 在modelsim 6.5b里测试,if可以仿真,wait会卡死。L).

    10. Design the 4-to-1 multiplexer in eg 7-19 by using if and else statements. The port interface must remain the same.

    my answer:

    clip_image018

    clip_image020

    clip_image022

    11. Design the traffic signal controller discussed in this chapter by using if and else statements.

    my answer:

    1 `define TRUE 1'b1;
    2
    3 `define FALSE 1'b0;
    4
    5 //Delays
    6
    7 `define Y2RDELAY 3 //Yellow to red delay
    8
    9 `define R2GDELAY 2 //Red to green delay
    10
    11 module sig_control
    12
    13 (hwy,cntry,X,clock,clear);
    14
    15 //I/O ports
    16
    17 output [1:0] hwy, cntry;
    18
    19 //2-bit output for 3 states of signal
    20
    21 //GREEN, YELLOW, RED
    22
    23 reg [1:0] hwy,cntry;
    24
    25 //declared output signals are registers
    26
    27 input X;
    28
    29 //if TRUE, indicates that there is car on
    30
    31 //the country road, otherwise FALSE
    32
    33 input clock,clear;
    34
    35 parameter RED=2'd0,
    36
    37 YELLOW=2'd1,
    38
    39 GREEN=2'd2;
    40
    41 //State definition HWY CONTRY
    42
    43 parameter S0=3'd0, //GREEN RED
    44
    45 S1=3'd1, //YELLOW RED
    46
    47 S2=3'd2, //RED RED
    48
    49 S3=3'd3, //RED GREEN
    50
    51 S4=3'd4; //RED YELLOW
    52
    53 //Internal state variables
    54
    55 reg [2:0] state;
    56
    57 reg [2:0] next_state;
    58
    59 //state changes only at postive edge of clock
    60
    61 always @(posedge clock)
    62
    63 if(clear)
    64
    65 state<=S0; //Controller starts in S0 state
    66
    67 else
    68
    69 state<=next_state; //State change
    70
    71 //Compute values of main signal and country signal
    72
    73 always @(state)
    74
    75 begin
    76
    77 //case(state)
    78
    79 //S0: ; //No change, use default
    80
    81 if(state==S1)
    82
    83 hwy=YELLOW;
    84
    85 else if(state==S2)
    86
    87 hwy=RED;
    88
    89 else if(state==S3)
    90
    91 begin
    92
    93 hwy=RED;
    94
    95 cntry=GREEN;
    96
    97 end
    98
    99 else if(state==S4)
    100
    101 begin
    102
    103 hwy=RED;
    104
    105 cntry=YELLOW;
    106
    107 end
    108
    109 else
    110
    111 begin
    112
    113 hwy=GREEN; //Default Light Assignment for Highway light
    114
    115 cntry=RED; //Default light Assignment for Country light
    116
    117 end
    118
    119 end
    120
    121 //State machine using case statements
    122
    123 always @(state or X)
    124
    125 begin
    126
    127 if(state==S0)
    128
    129 if(X)
    130
    131 next_state=S1;
    132
    133 else
    134
    135 next_state=S0;
    136
    137 else if(state== S1)
    138
    139 begin //delay some positive edges of clock
    140
    141 repeat(`Y2RDELAY) @(posedge clock);
    142
    143 next_state=S2;
    144
    145 end
    146
    147 else if(state== S2)
    148
    149 begin //delay some positive edges of clock
    150
    151 repeat(`R2GDELAY) @(posedge clock);
    152
    153 next_state=S3;
    154
    155 end
    156
    157 else if(state== S3)
    158
    159 if(X)
    160
    161 next_state=S3;
    162
    163 else
    164
    165 next_state=S4;
    166
    167 else
    168
    169 begin //delay some positive edges of clock
    170
    171 repeat(`Y2RDELAY) @(posedge clock);
    172
    173 next_state=S0;
    174
    175 end
    176
    177 //default:next_state=S0;
    178
    179 //endcase
    180
    181 end
    182
    183 endmodule

  • 相关阅读:
    Unity 3(一):简介与示例
    MongoDB以Windows Service运行
    动态SQL中变量赋值
    网站发布IIS后堆栈追踪无法获取出错的行号
    GridView Postback后出错Operation is not valid due to the current state of the object.
    Visual Studio 2010 SP1 在线安装后,找到缓存在本地的临时文件以便下次离线安装
    SQL Server 问题之 排序规则(collation)冲突
    IIS 问题集锦
    linux下安装mysql(ubuntu0.16.04.1)
    apt-get update 系列作用
  • 原文地址:https://www.cnblogs.com/halflife/p/1987253.html
Copyright © 2011-2022 走看看