4. 双端口ram设计

1. 设计要求

设计一个位宽8bit,地址深度为128,可以同时读写的双端口RAM

要求:模块名字为RAM_DUAL

输入端口:ADDR_W,ADDR_R

CLK_R,CLK_W,RSTn

ADDR_R[6:0],ADDR_W[6:0]

DATA_WRT[7:0]

RD_EN,WRT_EN

输出端口:

DATA_RD[7:0]

2. 补充

一般大容量的RAM由专门的IP厂商提供,有单口RAM(读写不能同时进行),双口RAM等各种样式。IP厂商会提供behavior model,综合以及后端库文件

小容量的RAM可以自己用触发器阵列搭建。属于双口RAM(读写可以同时进行,但是必须是不同地址的读写),可支持同时读写。常用在FIFO中

(自己用触发器搭的ram一般都是双口的,因为触发器是支持读写的,读的话就是读触发器Q端的数据,写的话就是往触发器D端写数据)

3. 设计代码

如上图:ram用二维数组表示,在给ram赋值的时候,由于向量 不能直接给二维数组赋值,所以mem[127:0] <= 0是不被允许的,我们可以使用for循环为mem赋值,但是仿真工具不识别for语句,我们需要使用generate语句

使用generate会让仿真工具把for循环里面的代码展开,循环128次就是分别写128个always语句。分别针对mem[0],mem[1],mem[2] ...... mem[127]。

而变量定义需要使用genvar。

4. 仿真代码和波形

不能直接将二维数组mem拖入波形中观察(这是仿真工具verdi节约资源的做法)。如果想让mem二维数组直接拖入波形,我们需要在main.v仿真文件中加入$fsdbDumpMDA选项。

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

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

相关文章

k8s学习——创建测试镜像

创建一个安装了ifconfig、telnet、curl、nc、traceroute、ping、nslookup等网络工具的镜像&#xff0c;便于集群中的测试。 创建一个Dockerfile文件 # 使用代理下载 Ubuntu 镜像作为基础 FROM docker.m.daocloud.io/library/ubuntu:latest# 设置环境变量 DEBIAN_FRONTEND 为 …

学习测试9-接口测试 2-抓包工具Fiddler

Fiddler 抓包工具的使用 怎么找接口信息&#xff0c;可以通过浏览器的开发者工具 Fiddler 是一个 HTTP 协议调试代理工具 File 菜单&#xff1a; Capture Traffic&#xff08;或 F12&#xff09;&#xff1a;是个开关&#xff0c;可以控制是否把 Fiddler 注册为系统代理。当把…

浅谈Open.Json.pickle.Os

一、Open函数使用 open函数是 Python 中用于打开文件的内置函数&#xff0c;它返回一个文件对象&#xff0c;该文件对象提供了对文件进行读写操作的方法。使用 open 函数时&#xff0c;通常需要指定至少两个参数&#xff1a;文件名&#xff08;file&#xff09;和模式&#xf…

【网络工具】Charles 介绍及环境配置

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/iAmAo &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会整理一些工作或学习中用到的工具介绍给大家~ &#x1f4d8;Charles 系列其它文章&#xff1a;【网络…

Git操纵本地仓库和远程仓库

git是一个代码托管的平台&#xff0c;我们可以对我们的代码进行分支 推送提交 打标签等等操作&#xff0c;而且git使用过程中也是支持一些linux语言的 比如cd呀 touch mkdir啊等等等 git的具体安装过程就不再赘述 我个人认为 好多东西就是 代码也好 文字 文档 也好&…

【C语言】结构体,枚举,联合超详解!!!

目录 结构体 结构体声明 结构体成员的访问 结构体自引用 结构体变量定义&#xff0c;初始化&#xff0c;传参 结构体内存对齐 位段 枚举 联合(共用体) 结构体 结构体声明 1. 概念 1. 结构体是一些值的集合&#xff0c;这些值称为成员变量。 2. 结构体的每个成员可…

长难句打卡7.15

The trend was naturally most obvious in those areas of science based especially on a mathematical or laboratory training, and can be illustrated in terms of the development of geology in the United Kingdom 这一趋势自然在以数学或实验室训练为基础的科学领域里…

Unlink

Unlink 原理 我们在利用 unlink 所造成的漏洞时&#xff0c;其实就是对 chunk 进行内存布局&#xff0c;然后借助 unlink 操作来达成修改指针的效果。简单回顾一下 unlink 的目的与过程&#xff0c;其目的是把一个双向链表中的空闲块拿出来&#xff08;例如 free 时和目前物理…

Leetcode二分搜索法浅析

文章目录 1.二分搜索法1.1什么是二分搜索法&#xff1f;1.2解法思路 1.二分搜索法 题目原文&#xff1a; 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返…

从PyTorch官方的一篇教程说开去(1 - 初心)

原文在此&#xff0c;喜欢读原汁原味的可以自行去跟&#xff0c;这是一个非常经典和有学习意义的例子&#xff0c;在此向老爷子们致敬 - https://pytorch.org/tutorials/intermediate/reinforcement_q_learning.html 开源文化好是好&#xff0c;但是“公地的悲哀”这点避不开…

每天一个数据分析题(四百三十七)- 统计量

若x1、x2、x3取自某总体的样本&#xff0c;当期望a已知&#xff0c;方差c未知时&#xff0c;则以下不是统计量的是 A. x1x2x3 B. min{x1&#xff0c;x2&#xff0c;x3} C. a(x1x2)/2 D. (x1x2x3)/c 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击…

用c语言实现一个alexnet

在C语言中实现一个完整的AlexNet神经网络是一个复杂的任务,涉及大量的矩阵运算和卷积操作。这个示例代码将涵盖AlexNet的主要组件,包括卷积层、ReLU激活函数、池化层和全连接层。 由于C语言本身没有像Python的NumPy那样的矩阵库,我们需要自己编写矩阵运算函数。另外,C语言…

高效运维:构建全面监控与自动化管理体系

在当今的数字化时代&#xff0c;运维管理已成为企业IT架构中不可或缺的一环。它不仅关乎系统的稳定运行&#xff0c;更直接影响到业务的响应速度、故障处理时间以及客户满意度等多个方面。因此&#xff0c;构建一套全面监控与自动化管理体系&#xff0c;对于提升企业运维效率、…

无人机之多旋翼与固定翼的区别

多旋翼无人机和固定翼无人机是无人机技术中的两种主要形式&#xff0c;各自有独特的优势和应用场景。 一、飞行原理与结构 多旋翼无人机&#xff1a;依靠多个旋翼产生升力来平衡飞行器的重力&#xff0c;通过改变每个旋翼的转速控制飞行器的姿态和平稳&#xff0c;使其能够垂…

C++ //练习 15.22 对于你在上一题中选择的类,为其添加合适的虚函数及公有成员和受保护的成员。

C Primer&#xff08;第5版&#xff09; 练习 15.22 练习 15.22 对于你在上一题中选择的类&#xff0c;为其添加合适的虚函数及公有成员和受保护的成员。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 class Shape {public:S…

PDF文件无法编辑?3步快速移除PDF编辑限制

正常来说,我们通过编辑器打开pdf文件后,就可以进行编辑了&#xff61;如果遇到了打开pdf却不能编辑的情况,那有可能是因为密码或是扫描件的原因&#xff61;小编整理了一些pdf文件无法编辑&#xff0c;以及pdf文件无法编辑时我们要如何处理的方法&#xff61;下面就随小编一起来…

[word] word如何编写公式? #微信#知识分享

word如何编写公式&#xff1f; word如何编写公式&#xff1f;Word中数学公式是经常会使用到的&#xff0c;若是要在文档中录入一些复杂的公式&#xff0c;要怎么做呢&#xff1f;接下来小编就来给大家讲一讲具体操作&#xff0c;一起看过来吧&#xff01; 方法一&#xff1a;…

stm32学习:(寄存器3)系统架构

时钟系统 时钟树 在STM32中有3种不同的时钟源用来驱动系统时钟(SYSCLK)&#xff1a; HSI振荡器时钟&#xff08;High Speed Internal oscillator&#xff0c;高速内部时钟&#xff09;HSE振荡器时钟&#xff08;High Speed External&#xff08;Oscillator / Clock&#xff…

Ruby爬虫技术:深度解析Zhihu网页结构

在互联网时代&#xff0c;数据的价值日益凸显&#xff0c;尤其是在社交媒体和问答平台如Zhihu&#xff08;知乎&#xff09;上&#xff0c;用户生成的内容蕴含着丰富的信息和洞察。本文将深入探讨如何使用Ruby爬虫技术来解析Zhihu的网页结构&#xff0c;并获取有价值的数据。 …

linux service小例

linux service 测试 1.创建一个app // myapp.c // 间隔10s写入时间到文件 #include <stdio.h> #include <time.h> #include <unistd.h> // 引入unix标准函数定义&#xff0c;如sleep()int main() {FILE *fp;time_t now;char buffer[80];// 打开文件以追加模…