ZYNQ_project:IP_ram_pll_test

news2025/1/16 15:50:44

例化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.coloradmin.cn/o/1197502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能与养老:技术助力银色产业的崛起

人工智能与养老&#xff1a;技术助力银色产业的崛起 随着人口老龄化的加速推进&#xff0c;养老问题成为了全球关注的热点。人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;为养老领域注入了新的活力。本文将探讨人工智能在养老领域的应用、关键挑战以及前景展望…

计算机毕业设计:水果识别检测系统 python 深度学习 YOLOv5

[毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;希望帮助更多的人 。 1、项目介绍 本文介绍了一种基于深度学习的水果检测与识别系统…

【解决方案】pytion 运行时提示 import psutil ModuleNotFoundError: No module named ‘psutil‘

报错原因分析 import psutil ModuleNotFoundError: No module named psutil报错原因分析 当前环境pytion中缺少了psutil包&#xff0c;使用pip命令进行安装 解决方案 pip install psutil

十八数藏的新时代探索:数字创新助推文化保护

在这个数字化的新时代&#xff0c;传统文化和数字创新的结合呈现出令人振奋的新面貌。十八数藏&#xff0c;作为文化数字创新的佼佼者&#xff0c;正以数字化的手段助推文化的保护与传承。 十八数藏通过数字技术&#xff0c;将传统非物质文化遗产以数字形式呈现&#xff0c;使其…

【代码随想录】算法训练计划18

1、513. 找树左下角的值 题目&#xff1a; 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 思路&#xff1a; 递归&#xff0c;规则&#xff0c;基本可以自己写出来 var maxDepth int var res int fun…

基于安卓android微信小程序的四六级助手系统

项目介绍 随着我国教育需求不断增加&#xff0c;高校教育资源有限&#xff0c;教育经费相对不足的情况下&#xff0c;利用现代信息技术发展高等教育&#xff0c;不仅充分利用了优秀的教育资源&#xff0c;而且为更多的人提供接受高等教育的机会&#xff0c;同时这也是极大促进…

【开源】基于Vue.js的智能停车场管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

Transforme原理--全局解读

文章目录 作用全局解读 作用 Transformer最初设计用于处理序列数据&#xff0c;特别在NLP(自然语言处理)领域取得了巨大成功 全局解读 Transformer来源于谷歌的一篇经典论文Attention is All you Need 在此使用Transformer在机器翻译中的运用来讲解Transformer。 其中Tran…

SplayTree高分测试用例

测试用例结果展示 覆盖率 变异得分 测试注意点 从SplayTree测起&#xff0c;然后再测SubSplayTree&#xff0c;因为前者调用后者。SplaySubTree的remove方法大部分内容需要通过反射才能测到。value和index在SplayTree当中都不是唯一的。一个index可能对应多个value。 不足之…

力扣100题——子串

560.和为k的子数组 这道题目不是滑动窗口的类型&#xff0c;因为长度并不是固定的。&#xff08;好的&#xff0c;我在说废话&#xff09; 注意题目要求是子数组&#xff0c;且是连贯的。那这里的话&#xff0c;解法有很多&#xff0c;最简单的就是暴力解法&#xff0c;但在这…

ChatGPT 如何改变科研之路

《Nature》全球博士后调查[1]中约有三分之一的受访者正在使用人工智能聊天机器人来帮助完善文本、生成或编辑代码、整理其领域的文献等等。 来自巴西的 Rafael Bretas 在日本生活了十多年&#xff0c;日语说得很好。书面日语的各个方面&#xff0c;例如严格的礼貌等级制度&…

CCNA课程实验-12-NAT

目录 实验条件网络拓朴需求 配置实现基础配置R1PC1ISPR2HTTP_ServerDNS_Server 配置在R2上配置静态NAT&#xff0c;将内网DNS Server关联到公网IP&#xff1a;202.1.1.2测试结果 配置在R2上配置静态NAT&#xff0c;将内网HTTP Server的TCP 80端口关联到公网IP&#xff1a;202.1…

力扣138:随机链表的复制

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

TiPro7000 Smart Tool V1.1无法打开解决办法

长江存储官网下载的TiPro7000 Smart Tool V1.1在win10运行时无法打开&#xff0c;转圈圈之后就没有反应了。官网下载的压缩包解压之后内容如下图。 解决办法&#xff1a;将.exe文件名的“致钛”二字删掉即可。文件名不能有中文。 打开后软件界面如下。 吐槽一下这软件做得挺简…

【Python大数据笔记_day06_Hive】

hive内外表操作 建表语法 create [external] table [if not exists] 表名(字段名 字段类型 , 字段名 字段类型 , ... ) [partitioned by (分区字段名 分区字段类型)] # 分区表固定格式 [clustered by (分桶字段名) into 桶个数 buckets] # 分桶表固定格式 注意: 可以排序[so…

Java,多线程,线程安全的懒汉式、死锁、ReentrantLock的使用以及一些知识点补充

关于线程安全地懒汉式有以下几种方式&#xff1a; /*** 实现线程安全的懒汉式*/ public class BankTest {Bank b1 null;Bank b2 null;public static void main(String[] args){BankTest bb new BankTest();Thread t1 new Thread(){Overridepublic void run(){bb.b1 Bank.…

【C++笔记】优先级队列priority_queue的模拟实现

【C笔记】优先级队列priority_queue的模拟实现 一、优先级队列的介绍与使用方式1.1、优先级队列介绍1.2、优先级队列的常见使用 二、优先级队列的模拟实现1.0、仿函数的介绍1.1、构造函数1.2、优先级队列的插入push1.3、优先级队列的删除(删除堆顶元素)1.4、获取堆顶元素1.5、判…

【蓝桥每日一题]-快速幂,倍增,滑动窗口(保姆级教程 篇1) #麦森数 #青蛙跳

之前是考试准备&#xff0c;所以有几天没更新&#xff0c;今天开始继续更新 目录 快速幂模板 题目&#xff1a;麦森数 思路&#xff1a; 题目&#xff1a;青蛙跳 思路&#xff1a; 快速幂模板 #include <bits/stdc.h> #define ll long long using namespa…

人工智能与教育:未来的技术融合

人工智能与教育&#xff1a;未来的技术融合 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;逐渐渗透到我们生活的方方面面&#xff0c;包括教育领域。AI与教育的结合&#xff0c;有望引发一场教育变革&#xff0c;提高教学效果&#xff0c;实现个性化学习&…

ENVI IDL:如何基于气象站点数据进行反距离权重插值?

01 前言 仅仅练习&#xff0c;大可使用ArcGIS或者已经封装好的python模块进行插值&#xff0c;此处仅仅从底层理解如何从公式和代码理解反距离权重插值的过程&#xff0c;从而更深刻的理解IDL的使用和插值的理解。 02 函数说明 2.1 Read_CSV()函数 官方语法如下&#xff1a…