# Goertzel Algorithm VHDL Implementation
This repository contains the VHDL implementation of the Goertzel Algorithm designed to detect a 150 kHz signal in a data set sampled at 4 MHz. The design is modular, synthesizable, and handles input and output data efficiently.
## Authors
> Name: Luis Fernando Rodriguez Gutierrez.
>
> Matriculation Number: 7219085.
> Name: Sheikh Muhammad Adib
>
> Matriculation Number: 7219310
> Name: Mohammed Rizwan
>
> Matriculation Number: 7218982
> Name:
>
> Matriculation Number:
## Goertzel Algorithm
The Goertzel algorithm is a digital signal processing technique used to detect specific frequencies within a block of input data. It's particularly useful for applications like tone detection in telecommunication systems.
In simple terms:
#### Purpose:
The Goertzel algorithm is designed to detect a specific frequency component within a block of input samples.
#### How it works:
It transforms the input data into a frequency domain representation but is optimized to focus on one frequency of interest.
#### Advantages:
It’s more efficient than performing a full Fast Fourier Transform (FFT) when you only need to detect a single frequency.
### Step-by-Step Equations
### Initialization
Set initial values:
- \( s[0] = 0 \)
- \( s[1] = 0 \)
### Processing each sample x[n]
1. Compute k, the index for the target frequency:
- k = (N * f_target) / f_sample
2. Compute the coefficient:
- omega = (2 * pi * k) / N
- coeff = 2 * cos(omega)
3. Update state:
- s[n] = x[n] + (coeff * s[n-1]) - s[n-2]
4. Shift the states:
- s[n-2] = s[n-1]
- s[n-1] = s[n]
### Final Calculation
Compute the magnitude of the target frequency component:
- real_part = s[N-1] - (s[N-2] * cos(omega))
- imag_part = s[N-2] * sin(omega)
- magnitude = sqrt(real_part^2 + imag_part^2)
### Summary
The Goertzel algorithm processes each input sample to update its internal state and finally computes the magnitude of the desired frequency component. *This method is efficient for detecting specific frequencies within a signal.*
## Shared Folder [Link](https://fhdoprod.sharepoint.com/:f:/r/sites/Stud-Microelectronic/Shared%20Documents/General?csf=1&web=1&e=UawF4C)
- Content
- Milestone
- Minute Meeting
- Task Distribution
- Design
## Project Overview
The Goertzel Algorithm is implemented with the following specifications:
- Number of samples (N): 135
- Input data: 12-bit unsigned (offset binary numbers)
- Internal data: 20-bit signed (2’s complement numbers)
- Sample frequency: 4 MHz
- Signal frequency to detect: 150 kHz
- Output: 20-bit signed level indication
## Modules
### Module A: The system
- **Function**: container for the modules
- **Tasks**:
- **Interface**:
- rst
- clk
- 12-bit unsigned input samples.
- N (number of sample: int)[generic]
- frequency sample
- output magnitude
- output real number
- output imaginary number
### Module B: Filler
- **Function**: Convert the 12-bit unsigned samples to 20-bit signed samples (2’s complement)
- **Tasks**:
- Accept 12-bit unsigned input samples.
- Convert the 12-bit unsigned samples to 20-bit signed samples (2’s complement).
- Pass the converted samples to the Goertzel Module.
- **Interface**:
- rst
- clk
- 12-bit unsigned input samples.
- output 20-bit signed samples
### Module B: Goertzel Core Module
- **Function**: Implements the Goertzel algorithm to detect the presence and level of the 150 kHz signal within the input data.
- **Tasks**:
- Initialize algorithm parameters.
- Implement the Goertzel recurrence relation to process each sample.
- Calculate the magnitude squared of the resulting complex number.
- Pass the computed result to the Output and Scaling Module.
### Module C: Output and Scaling Module
- **Function**: Scales the Goertzel output to fit the desired output range and format, and provides the final signed output number.
- **Tasks**:
- Accept the result from the Goertzel Core Module.
- Apply necessary scaling to ensure the output fits within the 20-bit signed range.
- Handle any overflow conditions.
- Output the final 20-bit signed result.
### Module D: Control Unit Module
- **Function**: Coordinates the operation of the Input Interface, Goertzel Core, and Output and Scaling Modules, ensuring proper data flow and timing.
- **Tasks**:
- Generate control signals for data sampling and processing.
- Ensure proper sequencing of operations.
- Manage the start and stop conditions for processing each data set.
### Module E: Testbench Module
- **Function**: Simulates the entire system to verify functionality and performance.
- **Tasks**:
- Provide simulated input data to the Input Interface Module.
- Capture and analyze the output from the Output and Scaling Module.
- Verify the correctness of the overall design through various test scenarios.
## Getting Started
### Prerequisites
- VHDL Simulator (e.g., ModelSim, Vivado)
- FPGA Development Board (optional for synthesis and real-world testing)
### Setup
1. Clone the repository:
```bash
git clone https://github.com/yourusername/goertzel-vhdl.git
cd goertzel-vhdl
没有合适的资源?快使用搜索试试~ 我知道了~
该设计是模块化的、可综合的,并且能够有效地处理输入和输出数据matlab实现.rar
共34个文件
m:17个
txt:10个
vhd:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 164 浏览量
2024-07-13
22:17:52
上传
评论
收藏 545KB RAR 举报
温馨提示
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 5.作者介绍:某大厂资深算法工程师,从事Matlab算法仿真工作10年;擅长智能优化算法、神经网络预测、信号处理、元胞自动机等多种领域的算法仿真实验,更多仿真源码、数据集定制私信+。
资源推荐
资源详情
资源评论
收起资源包目录
以 4 MHz 采样的数据集中的 150 kHz 信号。该设计是模块化的、可综合的,并且能够有效地处理输入和输出数据matlab实现.rar (34个子文件)
以 4 MHz 采样的数据集中的 150 kHz 信号。该设计是模块化的、可综合的,并且能够有效地处理输入和输出数据matlab实现
以 4 MHz 采样的数据集中的 150 kHz 信号。该设计是模块化的、可综合的,并且能够有效地处理输入和输出数据matlab实现
Goertzel-Algorithm-main
Matlab
Goertzel_v2
gaussian_filter.m 734B
main_DMTF.m 901B
main.m 501B
goertzel_init.m 264B
main_faultDetection.m 1KB
main_faultDetectionGauss.m 2KB
goertzel_main.m 385B
goertzel_final.m 332B
goertzel_process.m 230B
main_freqAnalysis.m 1KB
Goertzel_v1
test_frequency.m 954B
plot_frequency_response.m 1KB
goertzel_algorithm.m 611B
test_main.m 290B
generate_signal.m 959B
goertzel_main.m 1KB
run.m 99B
Diagrams
DraftVersion.drawio 34KB
DraftVersion.drawio.pdf 44KB
architecture_goertzel.pdf 493KB
Modules
goertzel_init.vhd.txt 2KB
place module here.txt 0B
result_tb.vhd.txt 2KB
filler_tb.vhd 3KB
filler.vhd 873B
goertzel_init_tb.vhd.txt 3KB
system.vhd.txt 4KB
goertzel_final_tb.vhd.txt 3KB
system_tb.vhd 2KB
result.vhd.txt 1KB
goertzel_final.vhd.txt 2KB
C
Goertzel.c.txt 2KB
README.md 5KB
license.txt 814B
共 34 条
- 1
资源评论
matlab科研助手
- 粉丝: 2w+
- 资源: 5932
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Java、JavaScript、HTML、CSS的全面运动鞋微会员平台设计源码
- 基于PHP开发的机械协会物资管理系统API端设计源码
- 基于ant-design-pro的TypeScript中台前端设计源码
- 基于Python、HTML和CSS的头条新闻设计源码优化
- 基于Ruby语言开发的homebrew-php版本设计源码
- Mini-Sequence Transformer (MST) 方法:用于极长序列训练的高效优化
- 基于Vue、JavaScript和HTML的poetryclub-frontend设计源码
- 基于Android平台的Java老年人健康管理应用设计源码
- HCIE-Security实验手册与考试攻略
- 基于Java技术的中海教育Online留学学前辅导平台设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功