【RK3568+PG2L50H開發板實驗例程】FPGA部分 | Pango 的時鐘資源——鎖相環

本原創文章由深圳市小眼睛科技有限公司創作,版權歸本公司所有,如需轉載,需授權并注明出處(www.meyesemi.com)

1.實驗簡介

實驗目的:

了解 PLL IP 的基本使用方法。

實驗環境: Window11 PDS2022.2-SP6.4

芯片型號: PG2L50H-484

2.實驗原理

2.1. PLL 介紹

? ? ? 鎖相環作為一種反饋控制電路,其特點是利用外部輸入的參考信號來控制環路內部震蕩信號的頻率和相位。因為鎖相環可以實現輸出信號頻率對輸入信號頻率的自動跟蹤,所以鎖相環通常用于閉環跟蹤電路。鎖相環在工作的過程中,當輸出信號的頻率與輸入信號的頻率相等時,輸出電壓與輸入電壓保持固定的相位差值,即輸出電壓與輸入電壓的相位被鎖住,這就是鎖相環名稱的由來。

? ? ? 鎖相環擁有強大的性能,可以對輸入到 FPGA 的時鐘信號進行任意分頻、倍頻、 相位調整、占空比調整,從而輸出一個期望時鐘;除此之外,在一些復雜的工程中, 哪怕我們不需要修改任何時鐘參數,也常常會使用 PLL 來優化時鐘抖動,以此得到一個更為穩定的時鐘信號。正是因為 PLL 的這些性能都是我們在實際設計中所需要的,并且是通過編寫代碼無法實現的,所以 PLL IP 核才會成為程序設計中最常用 IP 核之一。 PLL IP 是紫光同創基于 PLL 及時鐘網絡資源設計的 IP,通過不同的參數配置,可實 現時鐘信號的調頻、調相、同步、頻率綜合等功能。

2.2. IP 配置

? ?首先點擊快捷工具欄的“IP”圖標,進入 IP 例化設置

? ?然后在 IP 目錄處選擇 PLL,在 Instance name 處為本次實例化的 IP 取一個名字,接著點擊 Customise 進入 IP 配置頁面。操作示意圖如下:

? ??PLL 的使用可選擇 Basic 和 Advanced 兩種模式,Advanced 模式下 PLL 的內部參數配置完全開放,需要自己填寫輸入分頻系數、輸出分頻系數、占空比、相位、反饋分頻系數等才能正確配置。Basic 模式下用戶無需關心 PLL 的內部參數配置,只需輸入期望的頻率值、相位值、占空比等,IP 將自動計算,得到最佳的配置參數。如果沒有特殊應用,建議使用 Basic 模式配置 PLL。本次實驗我們選擇 Basic Configuration。

? ?接下來進行基礎配置:

? ?在 Public Configurations 一欄將輸入時鐘頻率設置為 25MHZ。

? ?在 Clockout0 Configurations 選項卡下,勾選使能 clkout0,將輸出頻率設置為 50MHZ。

? ?在 Clockout1 Configurations 選項卡下,勾選使能 clkout1,將輸出頻率設置為 100MHZ。

? ?在 Clockout2 Configurations 選項卡下,勾選使能 clkout2,將輸出頻率設置為 100MHZ,并設置相位偏移為 180 度。

? ??其他選項可以使用默認設置,若有其他需求可以查閱 IP 手冊了解,本實驗我們暫介紹 IP 基本的使用方法:

點擊左上角 generate 生成 IP。

3.代碼設計

? ? 模塊接口列表如下所示:

? ? 表 1- 3- 1 PLL IP 使用實驗模塊接口表

端口I/O位寬描述
?sys_clk?input1?系統時鐘
?clkout0?output1?54MHZ 時鐘
?clkout1?output1?81MHZ 時鐘
?clkout2?output1?81MHZ 時鐘,相位偏移 180 度
?lock?output1時鐘鎖定信號,當為高電平時, 代表 IP 核輸出時鐘穩定

PLL_TEST 頂層代碼:

module PLL_TEST(input      sys_clk , output     clkout0 , output     clkout1 , output     clkout2 , output     lock);PLL PLL_U0 (.clkout0   (clkout0 ),   // output.clkout1   (clkout1 ),   // output.clkout2   (clkout2 ),   // output.lock      (lock ),     // output.clkin1    (sys_clk )   // input);endmodule

該模塊的功能是例化 PLL IP 核,功能簡單,在此不做說明。

PLL_tb 測試代碼:

 timescale 1ns / 1psmodule PLL_tb();reg sys_clk ;wire   clkout0 ;wire   clkout1 ;wire   clkout2 ;wire   lock ;initialbegin#2sys_clk <= 0 ;endparameter CLK_FREQ = 25;//Mhzalways # ( 1000/CLK_FREQ/2 ) sys_clk = ~sys_clk ;PLL_TEST u_PLL_TEST(.sys_clk   (sys_clk   ), .clkout0   (clkout0   ), .clkout1   (clkout1   ), .clkout2   (clkout2   ), .lock     (lock      ));endmodule

? ? timescale 定義了模塊仿真的時間單位和時間精度。時間單位是 1 納秒,精度是 1 皮秒。

? ? initial 塊負責初始化系統時鐘。在仿真啟動后的 2 納秒,系統時鐘 sys_clk 被設置為 0。這是為了在仿真開始時定義一個已知的初始狀態。

? ? 代碼定義了一個時鐘頻率參數 CLK_FREQ 為 25 MHz,并使用一個 always 塊來翻轉系統時鐘信號。always 塊中的邏輯使得 sys_clk 每 40 納秒翻轉一次,從而生成一個 25MHz 的方波時鐘信號。這種時鐘信號用于驅動被測試的 PLL_TEST 模塊。

? ? 最后,將測試平臺的各個信號連接到 PLL_TEST 模塊。這包括將生成的系統時鐘 sys_clk 連接到 PLL_TEST 的時鐘輸入端,并將 PLL_TEST 的輸出信號 clkout0、clkout1、 clkout2 和 lock 使用 wire 引出觀察。

4.PDS 與 Modelsim 聯合仿真

? ? ?PDS 支持與 Modelsim 或 QuestaSim 等第三方仿真器的聯合仿真,而 Modelsim 是較為常用的仿真器,使用 PDS 與 Modelsim 來進行聯合仿真。

? ? 接下來選擇 Project->Project Setting,打開工程設置,準備設置聯合仿真。

? ? ?選擇 Simulation 選項卡,紅框 1 選擇剛才編譯生成的仿真庫的路徑,紅框 2 選擇 Modelsim 的啟動路徑,之后點擊 OK。

? ? ?右鍵仿真的文件,選擇 Run Behavior Simulation 開始行為仿真。

? ? ?運行后會自動打開 Modelsim。并執行仿真,如果沒有任何報錯,則表示成功。如果出現錯誤,請檢測 PDS 與 Modelsim 的配置。

5.實驗現象

? 點擊 Wave 觀察 PLL 輸出信號:

?使用標尺測量 clkout0,發現其一個時鐘周期是 20ns,也就是 50MHZ。

? ? ?可以看到 clkout1 的時鐘頻率是 100MHZ,且和 clkout2 相位偏差 180°,符合設置。需要注意 PLL 的輸出時鐘應該在時鐘鎖定信號 lock 有效之后才能使用,lock 信號拉高之前輸出 的時鐘是不確定的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88626.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88626.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88626.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Graph Contrastive Learning with Generative Adversarial Network基于生成對抗網絡的圖對比學習

1. 什么是圖&#xff1f;&#xff08;Graph&#xff09;想象一下社交網絡&#xff0c;每個人是一個“點”&#xff08;節點&#xff09;&#xff0c;他們之間的朋友關系是“線”&#xff08;邊&#xff09;。這樣的點和線組成的結構就是“圖”。在計算機科學中&#xff0c;圖被…

PyTorch中的torch.argmax()和torch.max()區別

在PyTorch中&#xff0c;torch.argmax()和torch.max()都是針對張量操作的函數&#xff0c;但它們的核心區別在于返回值的類型和用途&#xff1a;1. torch.argmax() 作用&#xff1a;僅返回張量中最大值所在的索引位置&#xff08;下標&#xff09;。返回值&#xff1a;一個整數…

WebSocket主從服務器架構完整教程

目錄 1. 前言:為什么要學習WebSocket主從架構 第一章:基礎知識準備 2.1 什么是WebSocket 生活中的例子 技術特點 2.2 WebSocket vs HTTP 什么時候用WebSocket? 2.3 什么是主從架構 生活中的例子 技術架構圖 2.4 環境準備 需要的軟件 項目結構 第二章:WebSock…

Java的extends通配符

在Java泛型中&#xff0c;extends通配符用于限定泛型類型的上界&#xff0c;即指定泛型可以是某個類型或其子類型。它有兩種常見用法&#xff1a;類型參數限定和通配符限定&#xff0c;下面詳細介紹&#xff1a; 1. 類型參數限定&#xff08;在類/方法定義中&#xff09; 在定義…

vue自定義提示框組件

不想要elementui的消息提示&#xff0c;自定義一個組件系統統一使用 一、寫頁面 vue &#xff08;我放的目錄是src/plugins/message.vue&#xff09;&#xff08;這里面使用elementui 里面icon 需要單獨引入&#xff09; <template><Transition name"down"&…

自動駕駛數據集綜述:統計特征、標注質量與未來展望

自動駕駛數據集綜述&#xff1a;統計特征、標注質量與未來展望 A Survey on Autonomous Driving Datasets: Statistics, Annotation Quality, and a Future Outlook 得益于硬件和深度學習技術的快速進步&#xff0c;自動駕駛近年來迅速發展并展現出良好的性能。高質量的數據集…

redis數據結構和數據類型

1.動態字符串SIMPLE DYNAMIC STRING(SDS)觀察上圖中的SDS結構&#xff0c;頭部包含字符串長度和分配的空間&#xff0c;可以以O&#xff08;1&#xff09;的時間復雜度計算出字符串長度&#xff0c;并且有了字符串長度后可以無視c語言的字符串缺陷&#xff08;\0作為結尾標識&a…

深度學習--神經網絡

一、深度學習的簡單概念深度學習是一種模仿人類大腦的運行方式&#xff0c;從大量數據中學習特征的學習模式。深度學習是機器學習的子集&#xff0c;它與機器學習的關系如下&#xff1a;二、感知神經網絡2.1簡單定義神經網絡&#xff08;Neural Networks&#xff09;是一種模擬…

.NET 程序的強名稱簽名與安全防護技術干貨

在 .NET 開發領域&#xff0c;保障程序的安全性和完整性至關重要。強名稱簽名和有效的安全防護措施是實現這一目標的關鍵手段。下面將詳細介紹 .NET 程序的強名稱簽名以及相關的安全防護方法。一、什么是強名稱簽名強名稱簽名是 .NET 框架提供的一種安全機制&#xff0c;其主要…

DNS(Domain Name System,域名系統)

目錄 **一、DNS的核心功能****二、DNS的工作原理****1. 解析流程(以車載導航請求為例)****2. 關鍵機制****三、車載以太網中DNS的特殊性**1. **高可靠性要求**2. **低延遲優化**3. **安全挑戰與防護****四、DNS相關協議與技術****五、車載DNS配置示例****六、DNS故障排查工具…

優化 ECharts 多條折線:折線數據不完整導致的X軸日期錯亂問題

目錄 一、簡單介紹 1.1 常見類型 二、時間軸錯亂問題 2.1 示例 2.2 示例完整代碼 2.3 問題分析 2.4 修復方法 第一步 第二步 2.5 優化后完整代碼 一、簡單介紹 ECharts 是一款基于 JavaScript 的數據可視化圖表庫&#xff0c;動態圖表是 ECharts 的一個重要應用場景…

網絡安全之注入攻擊:原理、危害與防御之道

網絡安全之注入攻擊&#xff1a;原理、危害與防御之道 引言 在OWASP Top 10安全風險榜單中&#xff0c;注入攻擊常年占據首位。2023年Verizon數據泄露調查報告顯示&#xff0c;67%的Web應用漏洞與注入類攻擊直接相關。本文從技術視角系統解析注入攻擊的核心原理、典型場景及防御…

Python爬蟲動態IP代理報錯全解析:從問題定位到實戰優化

目錄 一、代理IP失效&#xff1a;爬蟲的"隱形殺手" 1.1 失效場景復現 1.2 解決方案 二、403封禁&#xff1a;反爬機制的"精準打擊" 2.1 封禁原理剖析 2.2 破解方案 三、速度瓶頸&#xff1a;代理性能的"致命短板" 3.1 性能對比測試 3.2…

機器學習基礎知識【 激活函數、損失函數、優化器、 正則化、調度器、指標函數】

目錄標題機器學習基礎知識概覽激活函數 (Activation Functions)損失函數 (Loss Functions / Cost Functions)優化器 (Optimizers)正則化 (Regularization)調度器 (Schedulers / Learning Rate Schedulers)指標函數 (Metric Functions)其他重要概念訓練流程機器學習基礎知識概覽…

【達夢數據庫|JPA】后端數據庫國產化遷移記錄

項目背景 經典的springbootjpa&#xff0c;java1.8數據庫MySQL需要遷移到國產化數據庫達夢上 開發環境安裝 最簡單的方式&#xff1a; 官方網站下載安裝時選擇“典型安裝”即可 Linux安裝 國產化一律上docer不要猶豫 下載三方提供的docker鏡像按頁面文檔啟動即可同上下載官…

ubuntu22默認安裝firefox使用snap安裝還老打不開解決辦法

終極解決方案&#xff08;100% 避免 Snap 版 Firefox&#xff09; 步驟 1&#xff1a;徹底移除 Snap 版 Firefox bash sudo snap remove --purge firefox 步驟 2&#xff1a;添加 Mozilla 官方 PPA&#xff08;提供 .deb 版 Firefox&#xff09; bash sudo add-apt-repository …

MyBatis02-mybatis-config.xml配置文件講解

mybatis-config.xml 是 MyBatis 的核心配置文件&#xff0c;用于配置整個 MyBatis 框架的全局行為&#xff0c;比如環境&#xff08;數據源&#xff09;、事務、類型別名、插件、Mapper 映射等。示例&#xff1a;<?xml version"1.0" encoding"UTF-8" ?…

合上電腦不關機

在Debian 系統上&#xff0c;如何實現合上電腦不關機的效果&#xff1f; 可以修改配置文件&#xff1a; sudo vim /etc/systemd/logind.conf1.找到 HandleLidSwitch &#xff0c;將其值改為 ignore &#xff08;處理蓋子開關為忽略&#xff09; 2.將 LidSwitchIgnoreInhibited …

服務器深夜告警?可能是攻擊前兆!

凌晨三點&#xff0c;刺耳的告警鈴聲把你從夢中驚醒&#xff1a;服務器CPU 100%&#xff0c;內存耗盡&#xff01;你手忙腳亂地登錄服務器&#xff0c;發現某個進程瘋狂占用資源。是程序Bug&#xff1f;還是業務突增&#xff1f;排查半天&#xff0c;最后在角落的日志里發現蛛絲…

重學前端003 --- CSS 顏色

文章目錄文檔聲明head顏色模型div根據在這里 Freecodecamp 實踐&#xff0c;記錄筆記總結。 文檔聲明 在文檔頂部添加 DOCTYPE html 聲明 <!DOCTYPE html>head title 元素為搜索引擎提供了有關頁面的額外信息。 它還通過以下兩種方式顯示 title 元素的內容&#xff1a…