我的大学之计算机组成原理系列NO.8

课题:随机存储器设计

一、实验目的
1.学会使用 CoreGenerator 来产生RAM。
2.了解FPGA 基本存储资源,并学会应用。
3.理解随机存储器的基本原理及其特性。
二、实验设备
1.装有ISE Design Suite 14.7的计算机一台。
2.EDK-3 SA ISE实验平台。
三、实验任务
1.构建简单随机存储器系统。
2.采用实验板验证随机存储器功能及其特征。
四、实验原理
实验原理
下图为随机存储器实验原理图
在这里插入图片描述

总体包括数据缓冲器GB,计数器ADR,存储器MN2114,写寄存器R1 ,读寄存器R2。其中,CKR1=T1M1,CKR2=T2M1。

在这里插入图片描述
在这里插入图片描述

系统框图

RAM模块:
RAM模块采用Xilinx ISE软件自动生成,选择Tools工具的Core Generator进入Xilinx CORE Generator工具,进入该工具后新建项目,然后选择Memoryies&Storage Elements下的RAMs&ROMs的Block Memory Generator,进入RAM模块的参数配置(具体参数根据需求进行配置)。本实验利用 CoreGenerator工具产生的一个宽4位,深度为16位的简单单口RAM。
在这里插入图片描述

读写时序图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210104202831341.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BST01JU0VfV3c=,size_16,color_FFFFFF,t_70)

RAM配置-Memory类型:Single Port RAM 其他选项默认
在这里插入图片描述

配置 RAM的宽度和深度,以及操作模式
配置完毕后会生成ipcore_dir子目录,该目录即包含了RAM模块,具体可打开*.vhd文件查看生成的源文件。
LS161 模块:
74LS273 计数器能同步并行预置数据,具有清零置数,计数和保持功能,具
有进位输出端,可以串接计数器使用。
在这里插入图片描述

功能表

五、部分代码:

module ls161( 
  input clk_s, 
    input [3:0] Din, 
output [3:0] Qout,
 input CP, 
    input CR, 
  input Rstn, 
  input Load, 
  input EP, 
  input ET 
    ); 
 reg [3:0] Qout_tmp; 
 assign Qout=Qout_tmp; 
 always@(posedge clk_s) 
  begin 
   if (CP) begin 
    if (!CR |!Rstn) 
     Qout_tmp<=4'b0000; 
    else begin 
     if (Load==0)  Qout_tmp<=Din; 
     else begin 
      if (EP==0) Qout_tmp<=Qout_tmp; 
      else begin 
       if (ET==0) Qout_tmp<=Qout_tmp; 
       else  
        Qout_tmp<=Qout_tmp+1;
end  
end 
 end 
end 
end

六、实验结果
1.仿真结果
在这里插入图片描述
2.实验结果分析
在这里插入图片描述
在RAM中将单元地址存入自身单元,并读出,即0号单元存0,1号单元存1,以来类推。
load为0,可手动输入地址,即addr的二进制为地址号;load为1,可以自动变换地址。
R/W=’1’为写操作;R/W=’0’为读操作;
clr为1,不执行清空操作;clr为0,执行清空操作。
若要0号单元存0,1号单元存1,以此类推:R/W=’1’执行写操作;可以load为0,手动改动addr的值从0000、0001、0010…;Din的值从0000、0001、0010…;clr为0,不执行清空操作。load为1,则只需改动Din的值从0000、0001、0010…分别与自动变换的地址号做对应即可。

七、问题思考
1.影响随机存储器运行速度的因素有哪些?如何通过FPGA验证?

RAM运行速度:内存越大,运行越快;当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关;时钟频率;cpu 运行速度等。
验证:提高频率,加速操作的运行速度。

2.如果实验过程中突然断电,实验结果如何?原因?

突然断电,重启后功能还在,但是随机存储器中的值清空了。
原因:实验通过烧录将相关代码写入开发板中,所以断电后重启,功能正常。但RAM具有易失性,DRAM采用电容,电容器容易有漏电的情况。

### 上海大学计算机组成原理课程资料 #### 课程目标与教学大纲 上海大学的《计算机组成原理》课程旨在让学生理解计算机硬件系统的构成及其工作原理。该课程不仅涵盖了基本概念和理论,还涉及具体的设计实现方法和技术细节[^1]。 #### 主要内容概述 本课程通常会讲解如下几个方面: - **数据表示**:介绍二进制数、浮点数以及字符编码等基础知识。 - **指令集体系结构ISA**:解释不同类型的指令格式、寻址模式等内容。 - **中央处理器CPU设计**:探讨流水线技术、超标量处理机制等方面的知识。 - **存储器层次结构**:分析高速缓存(cache)的工作方式及虚拟内存管理策略。 - **输入/输出系统I/O**:讲述总线标准、中断控制等相关知识点。 #### 推荐参考书目 针对这门课的学习,建议参阅以下几本书籍作为辅助材料: - *Computer Organization and Design* by David A. Patterson & John L. Hennessy 这是一本经典的教材,在国内外高校广泛采用,能够很好地帮助学生构建起完整的计算机组织架构知识框架[^4]。 - *Structured Computer Organization* by Andrew S. Tanenbaum 此书籍同样适用于本科生教育阶段,书中通过分层的方式逐步深入浅出地介绍了计算机内部运作流程。 ```python # 示例Python代码用于模拟查询数据库获取课程信息 import sqlite3 def get_course_info(university_name, course_title): conn = sqlite3.connect('universities.db') cursor = conn.cursor() query = f""" SELECT description FROM courses WHERE university='{university_name}' AND title='{course_title}' """ cursor.execute(query) result = cursor.fetchone() if result is not None: print(f"{university_name} {course_title}: ", result[0]) else: print("No information found.") get_course_info('Shanghai University', 'Principles of Computer Composition') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值