Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Đăng ký
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
semicon_lab.jpg

Thế giới ASIC

Parameterized Modules

Introduction

Let's assume that we have a design which requires us to have counters of various width, but with the same functionality. 

Lần cập nhật cuối ( Thứ năm, 09 Tháng 9 2021 17:24 ) Đọc thêm...
 

Task And Function part 2

Function

A Verilog HDL function is the same as a task, with very little differences, like function cannot drive more than one output, can not contain delays.

Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 00:58 ) Đọc thêm...
 

Task And Function part 1

Task

Tasks are used in all programming languages, generally known as procedures or subroutines. The lines of code are enclosed in task....end task brackets. 

Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 00:58 ) Đọc thêm...
 

Verilog Operators Part-II

Reduction Operators

Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 00:59 ) Đọc thêm...
 

Verilog Operators Part 1

Arithmetic Operators

  • Binary: +, -, *, /, % (the modulus operator)
  • Unary: +, - (This is used to specify the sign)
    Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 00:59 ) Đọc thêm...
     

    User Defined Primitives Part-III

    Level Sensitive Sequential UDP
    Level-sensitive sequential behavior is represented in the same way as combinational behavior, except that the output is declared to be of type reg, and there is an additional field in each table entry. This new field represents the current state of the UDP.

    Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 00:59 ) Đọc thêm...
     

    User Defined Primitives Part-II

    Combinational UDPs

    In combinational UDPs, the output is determined as a function of the current input. Whenever an input changes value, the UDP is evaluated and one of the state table rows is matched. 

    Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 00:59 ) Đọc thêm...
     

    User Defined Primitives Part-I

    Introduction

    Verilog has built-in primitives like gates, transmission gates, and switches. This is a rather small number of primitives; if we need more complex primitives, then Verilog provides UDP,

    Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 00:59 ) Đọc thêm...
     

    My first program in Verilog

    Introduction

    If you refer to any book on programming languages, it starts with an "Hello World" program; once you have written it, you can be sure that you can do something in that language

    Lần cập nhật cuối ( Thứ ba, 31 Tháng 8 2021 15:34 ) Đọc thêm...
     

    Art of Writing TestBenches Part - II

    Writing a TestBench

    First step of any testbench creation is building a dummy template which basically declares inputs to DUT as reg and outputs from DUT as wire, then instantiates the DUT as shown in the code below. 

    Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 01:00 ) Đọc thêm...
     

    Art of Writing TestBenches Part - I

    Introduction
    Writing a testbench is as complex as writing the RTL code itself. These days ASICs are getting more and more complex and thus verifying these complex ASIC has become a challenge. Typically 60-70% of time needed for any ASIC is spent on verification/validation/testing. 

    Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 01:00 ) Đọc thêm...
     

    System Task and Function

    Introduction

    There are tasks and functions that are used to generate input and output during simulation. Their names begin with a dollar sign ($). The synthesis tools parse and ignore system functions, and hence can be included even in synthesizable models.

    Lần cập nhật cuối ( Chủ nhật, 29 Tháng 8 2021 14:12 ) Đọc thêm...
     

    Compiler Directives

    Introduction

    A compiler directive may be used to control the compilation of a Verilog description. The grave accent mark, `, denotes a compiler directive. 

    Lần cập nhật cuối ( Chủ nhật, 29 Tháng 8 2021 14:01 ) Đọc thêm...
     

    Modeling Memories And FSM Part - II

    Introduction to FSM

    State machines or FSM are the heart of any digital design; of course a counter is a simple form of FSM. When I was learning Verilog, I used to wonder "How do I code FSM in Verilog" 

    and "What is the best way to code it". I will try to answer the first part of the question below and second part of the question can be found in the tidbits section.

    State machine Types

    There are two types of state machines as classified by the types of outputs generated from each. The first is the Moore State Machine where the outputs are only a function of the present state, the second is the Mealy State Machine where one or more of the outputs are a function of the present state and one or more of the inputs.

    Mealy Model

    Moore Model

     

    State machines can also be classified according to the state encoding used. Encoding style is also a critical factor which decides speed and gate complexity of the FSM. Binary, gray, one hot, one cold, and almost one hot are the different types of encoding styles used in coding FSM states.

    Modeling State machines.

    One thing that need to be kept in mind when coding FSM is that combinational logic and sequence logic should be in two different always blocks. In the above two figures, next state logic is always the combinational logic. State Registers and Output logic are sequential logic. It is very important that any asynchronous signal to the next state logic be synchronized before being fed to the FSM. Always try to keep FSM in a separate Verilog file.
    Using constants declaration like parameter or `define to define states of the FSM makes code more readable and easy to manage.

    Example - Arbiter

    We will be using the arbiter FSM to study FSM coding styles in Verilog

    Verilog Code

    FSM code should have three sections:

    • Encoding style.
    • Combinational part.
    • Sequential part.

    Encoding Style

    There are many encoding styles around, some of which are:

    • Binary Encoding
    • One Hot Encoding
    • One Cold Encoding
    • Almost One Hot Encoding
    • Almost One Cold Encoding
    • Gray Encoding

    Of all the above types we normally use one hot and binary encoding.

    One Hot Encoding

     1 parameter  [4:0]  IDLE  = 5'b0_0001;

     2 parameter  [4:0]  GNT0  = 5'b0_0010;

     3 parameter  [4:0]  GNT1  = 5'b0_0100;

     4 parameter  [4:0]  GNT2  = 5'b0_1000;

     5 parameter  [4:0]  GNT3  = 5'b1_0000;

    Binary Encoding

     1 parameter  [2:0]  IDLE  = 3'b000;

     2 parameter  [2:0]  GNT0  = 3'b001;

     3 parameter  [2:0]  GNT1  = 3'b010;

     4 parameter  [2:0]  GNT2  = 3'b011;

     5 parameter  [2:0]  GNT3  = 3'b100;

    Gray Encoding

     1 parameter  [2:0]  IDLE  = 3'b000;

     2 parameter  [2:0]  GNT0  = 3'b001;

     3 parameter  [2:0]  GNT1  = 3'b011;

     4 parameter  [2:0]  GNT2  = 3'b010;

     5 parameter  [2:0]  GNT3  = 3'b110;

     Bạn Có Đam Mê Với Vi Mạch hay Nhúng      -     Bạn Muốn Trau Dồi Thêm Kĩ Năng

    Mong Muốn Có Thêm Cơ Hội Trong Công Việc

    Và Trở Thành Một Người Có Giá Trị Hơn

    Bạn Chưa Biết Phương Thức Nào Nhanh Chóng Để Đạt Được Chúng

    Hãy Để Chúng Tôi Hỗ Trợ Cho Bạn. SEMICON  

    Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 01:00 )
     

    Modeling Memories And FSM Part - I

    Memory Modeling To help modeling of memory, Verilog provides support for two dimensions arrays. Behavioral models of memories are modeled by declaring an array of register variables; any word in the array may be accessed using an index into the array. A temporary variable is required to access a discrete bit within the array.

    Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 01:00 ) Đọc thêm...
     

    Verilog Quick Reference part 2

    SYSTEM TASKSbut mentioned in the informative appendix.

    INPUT
    Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 01:01 ) Đọc thêm...
     
    Trang 14 của 119

    Latest IC Design Articles

    Related Articles

    Most Read IC Design Articles

    Chat Zalo