Skip to content

raju09or/verilog_AMmodulation_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

📡 AM Modulation in Verilog
This project demonstrates a digital implementation of Amplitude Modulation (AM) using Verilog. It generates a high-frequency carrier signal and a low-frequency envelope signal, then performs AM modulation by multiplying them.

🧠 Concept Amplitude Modulation is a technique where the amplitude of a carrier wave is varied in proportion to the message (modulating) signal. The mathematical expression of AM is:

AM(t) = Carrier(t) × [1 + Envelope(t)] In this digital implementation:

A 16-entry sine LUT (based on the top 4 bits of a 16-bit phase accumulator) is used. Two phase accumulators generate: High-frequency carrier signal (sin_carrier) Low-frequency envelope signal (sin_env) Final output am_out is calculated as:

am_out <= (sin_carrier * (sin_env + 32767)) >>> 15; This equation ensures the envelope modulates the amplitude of the carrier, and the result is scaled properly to fit a 16-bit signed output.

🗂️ File Structure

exam.v : Main Verilog module implementing the AM modulation logic. exam_tb.v : Testbench used to simulate and verify the design. waveform.png : Simulation waveform showing carrier, envelope, and AM output.

📷 Simulation Output

From top to bottom:

clk : Clock signal sin_carrier : High-frequency carrier wave sin_env : Low-frequency modulating signal am_out : AM-modulated output

As seen in the waveform, the amplitude of the carrier varies in sync with the envelope, confirming correct modulation behavior.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published