There are many places where we need to check how many 0's or 1's are present in incoming data. It can be packet inspection or these counting further can be used for different purposes. This Verilog code is designed to efficiently count the occurrences of both '1' and '0' bits within a 32-bit input data. The primary objective of this module is to provide an accurate count of the number of '1's and '0's present in the input data simultaneously. Module takes 32-bit input data with valid bit. There are also clock and reset signals. Module has two output count vlaues, one for number of 1's and another one for number of 0's, and one valid signal. 32-bit input data is fed to the function only on valid_input and function will return number of 1's in the 32-bit data. This value will be subtracted from 32 and it will give us number of 0's present in the data. Both output values are true only when output_valid signal is high.
Search This Blog
Showing posts with label Verilog. Show all posts
Showing posts with label Verilog. Show all posts
Friday, 18 August 2023
Monday, 7 November 2022
Rising and Falling Edge Detector using Verilog
In the real word, there might be many scenario that we need to detect rising edge or falling edge of the signal. If rising/falling edge happens on particular signal, then design can perform certain task. This rising or falling edge can be detected using following code. This code is done in Verilog language. In given below example code, clock clk, input signal sig_a, output rising edge signal ris_a and falling edge signal fal_a are defined. Both ris_a and fal_a are high for one clock cycle when circuit detects rising or falling edge on the sig_a respectively.
Sunday, 13 May 2018
Get Familiar with System Task in Verilog
There are special Tasks and Function in Verilog language which are used to generate input and output during simulation process. These special Tasks and Functions are always starts with $ sign, followed by Task/Function specifier. Synthesis tools ignore these system tasks and functions.
These System Tasks are classified as below
- Display Task
- $display, $write, $monitor, $strobe
- File I/O Task
- $fopen, $fclose, $fdisplay, $fstrobe, $fmonitor
- Timescale Task
- $time, $stime, $realtime
- Simulation Control Task
- $reset, $finish, $stop
Tuesday, 13 June 2017
Verilog Code for (7,4) Systematic Hamming Encoder
Hamming code is useful in Error Correction in Linear Block Code. This code will encode four bits of data and generate seven bits of code by adding three bits as parity bits. It was introduced by Richard W. Hamming. This algorithm can detect one and two bit error and can correct one bit error. Given below code will generate (7,4) Systematic Hamming Encoder. This encoder will use Least Significant 4 bits as data inputs and Most 3 significant bits as a parity bits.
Get VHDL Code.
Monday, 11 April 2016
Design BCD to 7-Segment Decoder using Verilog Coding
Given below Verilog code will convert 4 bit BCD into equivalent seven segment number. It will accept 4 bit input and generate seven bit output. One seven segment can show zero to nine digit, so there is 4 bit input. Code is written for Common Cathode seven segment LED.So, LEDs will glow when the input is high. Find VHDL Code here.
Common Cathode Seven Segment Display |
Friday, 1 April 2016
Design 4 bit Magnitude Comprator using Verilog and Verify with Test Bench
This design accepts two four bit inputs 'a' and 'b' and generates three one bit outputs 'eq', 'gt' and 'lt'. If both inputs are same then 'eq' bit will be high and other two outputs will be low. If 'a' is greater than 'b' then 'gt' will be high and other two outputs will be low. Same way if 'a' is less than 'b' then 'lt' output will go high and other two output will go low.
Thursday, 31 March 2016
All About Operators in Verilog
Every language has its own set of Operators. VHDL has its own operators, same way Verilog has own set of operators to perform several operation on inputs. If you have knowledge of operators in C or C++, then it is very easy to understand operators in Verilog. There are total ten types of operators in Verilog. Operators are depending on number of operands.
- Arithmetic
- Relational
- Equality
- Logical
- Bit-wise
- Reduction
- Shift
- Concatenation
- Replication
- Conditional
Sunday, 13 March 2016
Quick Overview To Start Coding into Verilog
- Verilog is very popular Hardware Description language. It was introduced by Gateway Design Automation in 1984. In 1989, Cadence Design Systems purchased and put into public domain in 1990. In 1993, OVI enhanced the verilog language but that was not well accepted. IEEE standardized the Verilog HDL(IEEE 1364-1995) in 1995. In 2001, extension to verilog-95 submitted to IEEE and accepted verilog IEEE std 1364-2001. The revision of the language is also done in 2002 and 2005.
Sunday, 10 January 2016
Verilog and VHDL Code for Digital Clock
Given below code is Simple Digital Clock. It accepts one input as 50 MHz clock and gives three output as Hour, Minute and Second. This code converts internally 50 MHz into 1 Hz Clock Frequency. In this code first process converts frequency from 50 MHz to 1 Hz. in the second process at every clock event second value will increment but up to 59 and then again zero. Same way Minute value will also increment after second value will reach to 59, but up to 59. Hour value will increment when minute value reaches to 59 and goes up to 23 and again goes to zero. In the last integer values of ss, mm and hr are converted into standard logic vector and assign to Second, Minute and Hour respectively. If you want to display this clock on your 7 segment or LCD display then you have write another code that accepts these inputs and generates equivalent output to be displayed.
Saturday, 30 May 2015
Verilog Code for Electronic Combination Lock System using FSM
Sr. No.
|
Name of Pin
|
Direction
|
Width
|
Description
|
1
|
clk
|
Input
|
1
|
Clock Signal
|
2
|
rst
|
Input
|
1
|
Reset Signal
|
3
|
b0
|
Input
|
1
|
Input Digit “0”
|
4
|
b1
|
Input
|
1
|
Input Digit “1”
|
5
|
unlock
|
Output
|
1
|
Status for unlock
|
In this lock system, only two digits are used to unlock system. With the help of "0" and "1", the lock will be unlock but with specific pattern. This lock will be unlock with "01011" code. If this pattern will be identified by lock then lock will be become open and output unlock bit will be "1", otherwise lock remain close and unlock bit will be "0". This Lock System is developed using FSM and there are total six stages.
Sunday, 22 February 2015
Data Types in Verilog Language
A Data Type is a classification of various class of Data, such as Real, Integer or Boolean. And It is important because it determines the value of that type; which operation can be done on values of that type; the real meaning of that data. Every language has its own Data Type.
In the same way, Verilog has it's own Data Types. There are mainly eight Data Types in Verilog which are listed below.
In the same way, Verilog has it's own Data Types. There are mainly eight Data Types in Verilog which are listed below.
- Value Set
- Nets
- Registers
- Integers
- Time
- Real
- Parameter
- Arrays
Monday, 4 August 2014
Verilog Code for Gray Counter
Gray code is one kind of binary number system where only one bit will change at a time. Today gray code is widely used in digital world. This will helpful for error correction and signal transmission. Gray counter is also useful in design and verification in VLSI domain. This code will generate gray code. Find out VHDL Code of Gray Counter here.
Wednesday, 23 July 2014
Implement Divide by 2, 4, 8 and 16 Counter using Flip-Flop
Monday, 21 July 2014
Design 4-bit Linear Feedback Shift Register(LFSR) using Verilog Coding and Verify with Test Bench
Linear Feedback Shift Register is a sequential shift register with combinational feedback logic around it that causes it to pseudo randomly cycle through a sequence of binary values. Feedback around LFSR's shift register comes from a selection of points in the register chain and constitute either XORing or XNORing these points to provide point back into the register. The LFSR basically loops through repetitive sequences of pseudo random values. The maximum length of sequence is (2^n) - 1. Find out VHDL Code Here.
Saturday, 12 July 2014
Friday, 4 July 2014
Verilog Code for Johnson Counter
Johnson Counter is one kind of Ring Counter. It is also known as Twisted Ring Counter. A 4-bit Johnson Counter passes blocks of four logic "0" and then passes four logic "1". So it will produce 8-bit pattern. For example, "1000" is initial output then it will generate 1100, 1110, 1111, 0111, 0011, 0001, 0000 and this patterns will repeat so on. Find VHDL Code here.
Sr. No.
|
Name of the Pin
|
Direction
|
Width
|
Description
|
1
|
Clk
|
Input
|
1
|
Clock Signal
|
2
|
Rst
|
Input
|
1
|
Reset Signal
|
3
|
Out
|
Output
|
4
|
Output Signal
|
Verilog Code for Ring Counter
Ring Counter is composed of Shift Registers. The data pattern will recirculate as long as clock pulses are applied. For example, if we talk about 4-bit Ring Counter, then the data pattern will repeat every four clock pulses. If pattern is 1000, then it will generate 0100, 0010, 0001, 1000 and so on. Find out VHDL Code here.
Ring Counter |
Sr. No.
|
Name of the Pin
|
Direction
|
Width
|
Description
|
1
|
Clk
|
Input
|
1
|
Clock Signal
|
2
|
Rst
|
Input
|
1
|
Reset Signal
|
3
|
Out
|
Output
|
4
|
Output Signal
|
Features of Verilog Language
- Verilog is case sensitive.
- In verilog, Keywords are defined in lower case.
- In Verilog, Most of the syntax is adopted from "C" language.
- Verilog can be used to model a digital circuit at Algorithm, RTL, Gate and Switch level.
- There is no concept of package in Verilog.
- It also supports advanced simulation features like TEXTIO, PLI, and UDPs.
Wednesday, 4 December 2013
Difference between $display and $strobe using Example in Verilog
Case 1 :
module case_1; reg [31:0] data; initial begin #20 data=50; $strobe("Strobe",$time,data); $display("display",$time,data); data=30; end endmodule
Ans. :
Time
|
Data
| |
$display
|
20
|
50
|
$strobe
|
20
|
30
|
---------------------------------------------------------------------------------------------
Interchange data without using third variable in Verilog
We can interchange value with the help of non-blocking statements.
always @ (a or b)
begin
a = 1;
b = 2;
#10;
Subscribe to:
Posts (Atom)