Skip to content
This repository was archived by the owner on Nov 26, 2020. It is now read-only.

Commit b0acb26

Browse files
final README.md file commit
This repository is currently under archive.
1 parent c7f7d7c commit b0acb26

File tree

1 file changed

+34
-54
lines changed

1 file changed

+34
-54
lines changed

README.md

Lines changed: 34 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,63 @@
11
# Verilog Tutorials
22

3-
This is a tutorial repository to learn verilog easily with all the basics that are required to get started for this language.
3+
This is a beginner friendly tutorial repository to learn verilog easily with all the basics that are required to get started for this language. Also, this repository is read only and is not currently being maintained by the author .
44

5-
---
6-
7-
#### Installation For Linux
5+
### Installation For Linux
86

97
* sudo apt-get update
108
* sudo apt-get install verilog
119
* sudo apt-get install gtkwave
1210

13-
---
14-
#### Introduction
15-
16-
Verilog is a hardware language. Examples of such languages are VHDL( VHSIC(Very High Speed Integrated Circuit) HDL).
17-
It is vendor independent for example, Xilinx, Verywell etc.Full form verilog is __Verify Logic__. It is used for Digital ICs not for Analog ICs.
18-
It uses gate level design abstraction. It was made at Gateway Design Automation and now is IEEE 1364-2001 standard.
19-
HDL came to help with the verification of design of complex circuits that are in place. Also, logic systhesis tools can convert design to any fabrication technology. Verilog is concurrent, case-sensitive and synthesizable language.
11+
### Introduction
2012

13+
Verilog is a hardware language which is a concurrent, case-sensitive and synthesizable language. Examples of such languages are VHDL( VHSIC(Very High Speed Integrated Circuit) HDL). It is vendor independent for example, Xilinx, Verywell etc.Full form verilog is __Verify Logic__. It is used for Digital ICs not for Analog ICs.It uses gate level design abstraction. It was made at Gateway Design Automation and now is IEEE 1364-2001 standard. HDL came to help with the verification of design of complex circuits that are in place. Also, logic synthesis tools can convert design to any fabrication technology.
2114

22-
Now, verilog's basic building block is module that provides information about input and output ports but hides internal implementation.
15+
Now, verilog's basic building block is a module that provides information about input and output ports but hides internal implementation.
2316

24-
#### Levels of abstraction
17+
### Levels of abstraction
2518

2619
* Behavioral Level( Design of Algorithm ) : Algorithmic and performance oriented programs are written with it.
2720
* Dataflow Level( Design of Equation ) : "assign" keyword is used for dataflow modelling. ex : assign c = a+b;
2821
* Gate Level( Interconnection with Logic Gates ) : Circuits will be defined by logic gates. ex : and(output, input) etc.
29-
* Switch Level( Implementation in terms of switches ) : Transistors either MOS or switches which conduct or are open. This style in complex and decreasing in popularity.
22+
* Switch Level( Implementation in terms of switches ) : Transistors either MOS or switches which conduct or are open. This style is complex and decreasing in popularity.
3023

31-
---
32-
#### Data Types
24+
### Data Types
3325

34-
Two primary data-types are as follow :
35-
* Nets : Connection between the components. Internal connection & is needed to be hidden from user. Like, wire a;
26+
Two primary data-types are as follows :
27+
* Nets : Connection between the components. Internal connection & is needed to be hidden from the user. Like, wire a;
3628
* Registers : Store the data in variable. Like, reg a;
3729

38-
Other data-types are :
39-
* Vectors : nets and registers can be declared as vectors with different widths. Like, wire[2:0] a; reg[7:0] b;
40-
* Values : 0(Logical zero/false), 1(Logical one/true), X(Unknown Logic Value), Z(High Impedence).
30+
Other data-types are :  
31+
* Vectors : nets and registers can be declared as vectors with different widths. Like, wire[2:0] a; reg[7:0] b;  
32+
* Values : 0(Logical zero/false), 1(Logical one/true), X(Unknown Logic Value), Z(High Impedance).
4133

42-
Integers, Arrays, Memories, Parameters, Strings are few other datatypes.
34+
Integers, Arrays, Memories, Parameters, Strings are few other data types.
4335

44-
---
45-
#### Concepts To Get Started
36+
### Concepts To Get Started
4637

47-
* Module Instantiation : Process of connecting one module to another.
38+
* Module Instantiation : Process of connecting one module to another.  
4839
Its subparts are Positional Mapping and Nomenclature Based Mapping.
4940
```
5041
ex 1 : module pos_map(q,clk,rst)
51-
output[1:0] q;
52-
input clk, rst;
53-
tflipflop lab0(q[0], clk, rst);
54-
tflipflop lab1(q[1], clk, rst);
55-
end
56-
42+
       output[1:0] q;
43+
       input clk, rst;
44+
       tflipflop lab0(q[0], clk, rst);
45+
       tflipflop lab1(q[1], clk, rst);
46+
       end
47+
       
5748
ex 2 : module nom_map(q,clk,rst)
58-
output[1:0] q;
59-
input clk, rst;
60-
tflipflop lab0(.q(q[0]), .clk(clk), .rst(rst));
61-
tflipflop lab1(.q(q[0]), .clk(clk), .rst(rst));
62-
end
49+
       output[1:0] q;
50+
       input clk, rst;
51+
       tflipflop lab0(.q(q[0]), .clk(clk), .rst(rst));
52+
       tflipflop lab1(.q(q[0]), .clk(clk), .rst(rst));
53+
       end
6354
```
6455

65-
* Comments : // for single line comment and /* ... */ multple comment lines.
66-
67-
* $display vs $monitor : $dispay is used to display immediate value of variables. It gets executed in active region. $monitor gets executed whenever the value of the given variable changes in it. It gets executed in the postponed region. Monitor is required only once to be written.
68-
69-
#### Note
70-
71-
More relevant points to be added.
56+
* Comments : // for single line comment and /* ... */ multiple comment lines.
7257

73-
---
58+
* $display vs $monitor : $dispay is used to display immediate value of variables. It gets executed in an active region. $monitor gets executed whenever the value of the given variable changes in it. It gets executed in the postponed region. Monitor is required only once to be written.
7459

75-
#### Regular Codes
60+
### Regular Codes
7661

7762
* ![Data Flow Modelling](src/DataFlowModelling.v) and ![Logic Gate Modelling](src/LogicGateModelling.v)
7863
* ![Asynchronous and Synchronous D-FlipFlop](src/AsyncAndSyncDFlipFlop.v)
@@ -86,9 +71,6 @@ More relevant points to be added.
8671
* ![T Flip Flop](src/TFlipFlop.v)
8772
* ![D Flip Flop](src/DFlipFlop.v)
8873

89-
90-
---
91-
9274
#### Code For Concepts
9375

9476
* ![Blocking Statements](src/Blocking.v) and ![Non-Blocking Statements](src/NonBlocking.v)
@@ -97,15 +79,13 @@ More relevant points to be added.
9779
* ![Moore '000' Sequence Machine](src/Moore000Sequence.v)
9880
* ![Traffic Lights - Two Lights/4-Point Crossing](src/TrafficLightsFourWay.v)
9981

100-
---
82+
### Case-Study
10183

102-
#### Case-Study
84+
* ![Biometric Authorization : Authorization happens only when hashed value is matched for particular input](src/BiometricsImplement.v)
10385

104-
* ![Biometric Autherization : Authorization happens only when hashed value is matched for particular input](src/BiometricsImplement.v)
105-
106-
---
107-
#### DIY Codes
86+
### DIY Codes
10887

10988
* Half Subtractor, Full Subtractor, Half Adder, Full Adder : Using DataFlow, LogicGate Modelling, case statements.
11089
* Master-Slave JK Flip-Flop : Truth table for master and slave latch both.
11190

91+

0 commit comments

Comments
 (0)