ZYNQ_project:IP_ram_pll_test

例化MMCM ip核,产生100Mhz,100Mhz并相位偏移180,50Mhz,25Mhz的时钟信号。

例化单口ram,并编写读写控制器,实现32个数据的写入与读出。

模块框图:

代码:

module ip_top(
    input       wire            sys_clk     ,
    input       wire            sys_rst_n   ,

    output      wire    [7:0]   douta       ,
    output      wire            clk_100Mhz  ,
    output      wire            clk_100Mhz_180Phase  ,
    output      wire            clk_50Mhz   ,
    output      wire            clk_25Mhz  
);

    // 例化间连�??
    wire            locked    ;
    // wire            clk_50Mhz ;
//ila_0 ila_0_inst(
//    .clk                ( clk_100Mhz ) ,
    
//    .probe0             ( clk_100Mhz ) ,
//    .probe1             ( clk_100Mhz_180Phase ) ,
//    .probe2             ( clk_50Mhz ) ,
//    .probe3             ( clk_25Mhz ) 
//);
    wire            ENA     ;         
    wire            WEA     ;         
    wire    [4:0]   ADDRA   ;       
    wire    [7:0]   DATA_INA; 
    wire            rst_n   ;
    assign  rst_n   = sys_rst_n && locked ;
clk_wiz_0 clk_wiz_0_inst(
    .clk_in1            ( sys_clk       ) , 
    .resetn             ( sys_rst_n     ) ,
    .locked             ( locked        ) ,  
    .clk_out1           ( clk_100Mhz    ) ,
    .clk_out2           ( clk_100Mhz_180Phase ) ,
    .clk_out3           ( clk_50Mhz     ) ,
    .clk_out4           ( clk_25Mhz     ) 
);

ram_wrA ram_wrA_inst(
    .sys_clk            ( clk_50Mhz     ) ,
    .sys_rst_n          ( rst_n         ) ,

    .ENA                ( ENA           ) ,
    .WEA                ( WEA           ) ,
    .ADDRA              ( ADDRA         ) ,
    .DATA_INA           ( DATA_INA      )  
);

blk_mem_gen_0 blk_mem_gen_0_inst(
    .clka               ( clk_50Mhz     ) , 
    .ena                ( ENA           ) , 
    .wea                ( WEA           ) , 
    .addra              ( ADDRA         ) , 
    .dina               ( DATA_INA      ) , 
    .douta              ( douta         ) 
);

endmodule

 

module ram_wrA (
    input       wire            sys_clk     ,
    input       wire            sys_rst_n   ,

    output      reg             ENA         ,
    output      reg             WEA         ,
    output      wire    [4:0]   ADDRA       ,
    output      wire    [7:0]   DATA_INA    
);
    parameter DATA_NUM = 32 ;
    reg     [4:0]       cnt_wr ; // 读写计数器。
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) 
            cnt_wr <= 5'd0 ;
        else if(ENA && (cnt_wr == DATA_NUM - 1))
            cnt_wr <= 5'd0 ;
        else if(ENA)
            cnt_wr <= cnt_wr + 1'b1 ;
        else 
            cnt_wr <= 5'd0 ;
    end

    // output      reg             ENA         ,
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) 
            ENA <= 1'b0 ;
        else
            ENA <= 1'b1 ;
    end
    // output      reg             WEA         ,
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) 
            WEA <= 1'b1 ;
        else if(cnt_wr == DATA_NUM - 1)
            WEA <= ~WEA ;
    end
    // output      wire    [4:0]   ADDRA       ,
    // output      wire    [4:0]   DATA_INA    
    assign  ADDRA    = cnt_wr ;
    assign  DATA_INA = {3'b000,cnt_wr} ;
    
endmodule

 

`timescale 1ns/1ns
module test();
    reg             sys_clk     ;
    reg             sys_rst_n   ;

    wire    [7:0]   douta       ;
    wire            clk_100Mhz  ;
    wire            clk_100Mhz_180Phase  ;
    wire            clk_50Mhz   ;
    wire            clk_25Mhz   ;
ip_top ip_top_inst(
    .sys_clk                ( sys_clk             ) ,
    .sys_rst_n              ( sys_rst_n           ) ,

    .douta                  ( douta               ) ,
    .clk_100Mhz             ( clk_100Mhz          ) ,
    .clk_100Mhz_180Phase    ( clk_100Mhz_180Phase ) ,
    .clk_50Mhz              ( clk_50Mhz           ) ,
    .clk_25Mhz              ( clk_25Mhz           )  
);

    parameter CYCLE = 20 ;

    initial begin
        sys_clk    = 1'b1 ;
        sys_rst_n <= 1'b0 ;
        #( CYCLE * 10 )   ;
        sys_rst_n <= 1'b1 ;
        #(CYCLE * 3000)   ;
        $stop             ;
    end

    always #( CYCLE / 2 ) sys_clk = ~sys_clk ;


endmodule

// `timescale 1ns/1ns
// module test();
//     reg             sys_clk     ;
//     reg             sys_rst_n   ;

//     wire            clk_100Mhz  ;
//     wire            clk_100Mhz_180Phase  ;
//     wire            clk_50Mhz   ;
//     wire            clk_25Mhz   ;

// ip_top ip_top_inst(
//     .sys_clk                ( sys_clk             ) ,
//     .sys_rst_n              ( sys_rst_n           ) ,

//     .clk_100Mhz             ( clk_100Mhz          ) ,
//     .clk_100Mhz_180Phase    ( clk_100Mhz_180Phase ) ,
//     .clk_50Mhz              ( clk_50Mhz           ) ,
//     .clk_25Mhz              ( clk_25Mhz           )  
// );

//     parameter CYCLE = 20 ;

//     initial begin
//         sys_clk    = 1'b1 ;
//         sys_rst_n <= 1'b0 ;
//         #( CYCLE * 10 )   ;
//         sys_rst_n <= 1'b1 ;
//         #(CYCLE * 3000)   ;
//         $stop             ;
//     end

//     always #( CYCLE / 2 ) sys_clk = ~sys_clk ;


// endmodule

时序图:

仿真:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/133289.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot_01

Spring https://spring.io/ SpringBoot可以帮助我们非常快速的构建应用程序、简化开发、提高效率。 SpringBootWeb入门 需求&#xff1a;使用SpringBoot开发一个web应用&#xff0c;浏览器发起请求/hello后&#xff0c;给浏览器返回字符串"Hello World~~~"。 步骤…

测试人员如何通过AI提高工作效率!

随着AI技术的兴起&#xff0c;像OpenAI推出的ChatGPT、Microsoft发布的Microsoft 365 Copilot、阿里的通义千问、百度的文心一言、华为的盘古大模型等。很多测试人员开始担心&#xff0c;岗位是否会被AI取代&#xff1f;其实取代你的不是AI&#xff0c;而是会使用AI的测试人&am…

基于springboot+vue的校园闲置物品交易系统

运行环境 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven 项目介绍 本文从管…

自动驾驶学习笔记(七)——感知融合

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 感知融合 卡尔曼滤波 融合策略 实…

NtripShare Mos地铁自动化监测终端盒子硬件设计

自动化监测产品到目前为止做了接近一年&#xff0c;在软件层面上&#xff0c;控制终端软件、平台软件、网平差算法都已解决&#xff0c;硬件盒子始终是心里过不去的坎&#xff0c;最终还是没有耐住性子自己做了一把。 选型如下&#xff1a; 1、主板:瑞芯微RK3568主板。 2、外…

解决《荒野大镖客》提示emp.dll文件丢失问题,总结5个修复方法

在当今数字时代&#xff0c;游戏已经成为人们休闲娱乐的重要方式。作为一名游戏爱好者&#xff0c;笔者在近期体验《荒野大镖客》这款游戏时&#xff0c;遇到了一个令人苦恼的问题——emp.dll文件丢失。这个问题让游戏的无法启动进行。本文将围绕这一问题&#xff0c;探讨其原因…

Leetcode2834. 找出美丽数组的最小和

Every day a Leetcode 题目来源&#xff1a;2834. 找出美丽数组的最小和 解法1&#xff1a;贪心 从最小正整数 1 开始枚举&#xff0c;设当前数为 num&#xff0c;如果 nums 里没有 target - num&#xff0c;就说明可以添加 num&#xff0c;依次填满直到有 n 个数即可。 用…

公开数据集:灵长类动物多通道感觉运动皮层电生理学的研究

Nonhuman Primate Reaching with Multichannel Sensorimotor Cortex Electrophysiology. 1 公开数据集网址&#xff1a;https://zenodo.org/records/3854034 目录 General DescriptionPossible usesVariable namesDecoder ResultsVideosSupplementsContact InformationCitation…

java 类和对象 (图文搭配,万字详解!!)

关于java类和对象&#xff0c;我们要掌握几个重点&#xff01; 1.类的定义方式以及对象的实例化 2.类中的成员变量和成员方法的使用 3.对象的整个初始化过程 4.封装特性 5.代码块 目录 一、面向对象的初步认识 1.1 什么是面向对象 1.2 面向对象与面向过程 1.2.1传统洗…

Python:词法分析(行结构与显式、隐式行拼接)

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 1、逻辑结构 一个Python程序由许多逻辑行组成&#xff0c;字面意义上的一行指的是末尾有换行符(\n)&#xff0c;但在不同的情况下&#xff0c;行末尾的换行符(\n)可能有…

语音识别与自然语言处理(NLP):技术前沿与未来趋势

语音识别与自然语言处理&#xff08;NLP&#xff09;&#xff1a;技术前沿与未来趋势 随着科技的快速发展&#xff0c;语音识别与自然语言处理&#xff08;NLP&#xff09;技术逐渐成为人工智能领域的研究热点。这两项技术的结合&#xff0c;使得机器能够更好地理解和处理人类语…

解析html生成Word文档

内容&#xff1a;读取html文件中的文本内容&#xff0c;然后生成Word文档导出。 事例场景&#xff1a;需求开发完成之后需要写文档&#xff08;代码修改清单&#xff09;&#xff0c;文档内容就是这次需求修改/新增的所有代码&#xff0c;需要列出修改的文件路径以及代码片段&…

Dart笔记:一些代码生成工具站点的介绍

Dart笔记&#xff1a; 一些代码生成工具站点的介绍 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/1343…

力扣138:随机链表的复制

力扣138&#xff1a;随机链表的复制 题目描述&#xff1a; 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff…

基于SSM的培训机构运营系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

【3】Gradle-快速入门使用【Gradle概念】

目录 【3】Gradle-快速入门使用【Gradle概念】Gradle任务查看可用任务了解任务探索任务依赖性 依赖关系了解传递依赖关系查看项目依赖项添加版本目录 【可选】 插件使用插件查看插件提供的任务配置插件 增量构建启用缓存使用构建缓存步骤总结 个人主页: 【⭐️个人主页】 需要您…

JVM虚拟机:垃圾回收器之CMS(老年代)

本文重点 在前面的课程中我们学习了Serial和PO垃圾回收器,本文将学习一种新的在老年代使用的垃圾回收器CMS。 特点 CMS收集器是一种以获取最短回收停顿时间为目标的收集器(还是会有短暂的STW),适合互联网或者B/S系统的服务器上,这类应用尤其重视服务器的响应速度,希望…

反转链表 --- 递归回溯算法练习三

目录 1. 分析题意 2. 分析算法原理 2.1. 递归思路&#xff1a; 1. 挖掘子问题&#xff1a; 3. 编写代码 3.1. step 1&#xff1a; 3.2. step 2&#xff1a; 3.3. step 3&#xff1a; 3.4. 递归代码&#xff1a; 1. 分析题意 力扣原题链接如下&#xff1a; 206. 反转链…

巧用ADB安卓调试工具,在双十一直播间轻松回复文字领取优惠!

微信改版了&#xff0c;现在看到我们全凭缘分&#xff0c;为了不错过【全栈工程师修炼指南】重要内容及福利&#xff0c;大家记得按照上方步骤设置「接收文章推送」哦~ 关注回复【学习交流群】加入【SecDevOps】学习交流群! 文章目录&#xff1a; 1.前言简述 描述: 通过前面几篇…

【AICFD案例教程】进气歧管分析

AICFD是由天洑软件自主研发的通用智能热流体仿真软件&#xff0c;用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程&#xff0c;帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…