计算机组成原理实验——单周期CPU相关问题

目录

Q&A

casex是什么意思

always(*)中的*是什么意思

wire,reg,assign,always,initial都代表什么含义?在什么类型的语句中使用?

怎么看仿真波形

genrerate bits什么功能?为什么会生成失败?什么原因?

什么是可综合?什么不可综合?综合的功能是什么?

slt,slti是什么指令,有什么功能和区别

$signed作用

IP核是什么?如何调用?xci是什么文件?coe文件是什么文件?怎么写进内存?

单通道ROM是什么?

如何分频?

小端模式如何体现?怎么写代码?

ALU怎么根据多选器选择输入端?

确定指令长度怎么写代码?

RS、RT、RD在汇编语言的位置在哪?有什么区别和特定功能?

编译器蓝、黄线意味着什么?

怎么解析指令获得控制信号?

除了新开一个综合,怎么更改文件路径?

怎么把ram改成rom?

 为何仿真时出现高阻值?

编译错误

[Synth 8-685] variable 'alures' should not be used in output port connection ["C:/Users/86173/Desktop/Computer_experiment/Single_termCPU/test/alu_top.v":37]

[VRFC 10-529] concurrent assignment to a non-net an is not permitted ["C:/Users/chenxy/Desktop/digit

 寄存器组的值怎么传递到不同接口


Q&A

  • casex是什么意思

casex,casez:在casex中利用x代替未知数字,casez用?代替未知数字,通常用于仿真

  • always(*)中的*是什么意思

敏感列表控制的简单写法,表示模块中所有输入变量都是敏感的

  • wire,reg,assign,always,initial都代表什么含义?在什么类型的语句中使用?

wire,reg是数据类型,assign为连续赋值语句,always,initial为过程结构语句

  • 怎么看仿真波形

  1. flow->simulation setting->检查下软件vivado、语言verilog、文件、周期
  2. flow->run simulation
  3. 点击右上角unite1可看波形
  4. 放大缩小可以看波形更清楚

(54条消息) Vivado下的仿真入门_leon_zeng0的博客-CSDN博客_vivadoverilog object窗口怎么新增变量

  • genrerate bits什么功能?为什么会生成失败?什么原因?

        bits是写入硬件板里。

  1. 注意constraints中的引脚要写对,是不是默认引脚,有没生成对应引脚文件等

(54条消息) Vivado:Generate Bitstream比特流写入失败的解决方法_Retrospector的博客-CSDN博客_bitstream generation failed

  • 什么是可综合?什么不可综合?综合的功能是什么?

  1. 功能:在标准单元库和设计约束的基础上构建门级电路
  2. 目的:产生物理电路门级结构,寻求最优测试方式
  3. 对象:时延、初始化不可综合
  • slt,slti是什么指令,有什么功能和区别

slt是小于即置位,slti是立即数的小于即置位。

slt $s0,$s1,$s2 -------->if($s1<$s2) $s0=1;else $s0=0;

  • $signed作用

$signed()是符号拓展时使用的,将位数拓展。

  • Verilog中的负数是{1‘b符号,pos_num},所以最好用$signed()来拓展符号
  • 移位操作使用《》以免符号丢失

(55条消息) Verilog 中signed和$signed()的用法_长弓的坚持的博客-CSDN博客_verilog signed

  • IP核是什么?如何调用?xci是什么文件?coe文件是什么文件?怎么写进内存?

定义:带有特定功能的硬件语言程序,与集成电路无关,可以移植到半导体工艺的集成电路的生产。

xci是ip调用生成文件,coe是初始化存储器的文件

(55条消息) 手撸MIPS32——5、利用Vivado IP设计指令存储器和数据存储器_迷路的小黑的博客-CSDN博客_vivado怎么生成数据存储器模块dataram

  • 单通道ROM是什么?

类似数值的维度,单通道0-255只能是数值,而多通道则能同时输送多个数据

(55条消息) 单通道和三通道学习理解单通道:_xiyong890的博客-CSDN博客

  • 如何分频?

利用原频率/目标频率,得到一个分段计数,只要用计数器数,在数到分段计数一半时时钟翻转,就达到分频

(55条消息) Verilog时钟分频模块设计_Ryzen3的博客-CSDN博客_verilog时钟分频设计

  • 小端模式如何体现?怎么写代码?

小端模式是低字节放在低地址处即0x76543210放在小端就是01 23 45 67

拼接时{R[a+3],R[a+2],R[a+1],R[a]},就可以将小端存储入存储区

  • ALU怎么根据多选器选择输入端?

各写好2个输入和一个多选器,再多写个top,实例化时输入值变成多选器的值即可

  • 确定指令长度怎么写代码?

  • RS、RT、RD在汇编语言的位置在哪?有什么区别和特定功能?

oprsrtrdshamtfunct
0$s2$s3$s1032

add $s1,$s2,$s3,最左侧对应目的寄存器,依次为rs,rt

        

oprsrtrdshamtfunct
8$s2$s1100

addi $s1,$s2,100 两边都是相加数,中间的rt是结果寄存器

  • 编译器蓝、黄线意味着什么?

都是编译有问题的地方,蓝线应该是变量未使用;黄色应该是多写符号;红色是编译出错。

  • 怎么解析指令获得控制信号?

指令相当于标志,对应的指令控制信号要自己对着数据通路想。

  • 除了新开一个综合,怎么更改文件路径?

目前我只想到新开项目的方法,多添加路径。

  • 怎么把ram改成rom?

直接点“source”里对应内存就可以打开设置了

  •  为何仿真时出现高阻值?

因为没有逻辑综合,要综合不同文件后再仿真才有数值

编译错误

  • [Synth 8-685] variable 'alures' should not be used in output port connection ["C:/Users/86173/Desktop/Computer_experiment/Single_termCPU/test/alu_top.v":37]

输出端口得是wire型,要能够修改

  • [VRFC 10-529] concurrent assignment to a non-net an is not permitted ["C:/Users/chenxy/Desktop/digit

对一个非网口类型不能同时赋值,要改成wire型

  •  寄存器组的值怎么传递到不同接口

   

找了几小时,原因竟然是地址这里位数写错了,导致数值根本没写进去!!! 

  • 为何周期是pc的两倍?

always @(negedge clk) // 时钟下降沿操作
begin
    if(!reset) 
    begin
        if(!halt) begin
            pcc <= add4; //使用了旧的add4
            add4 <= pcc + 4;//使用了旧的pc值
        end 
    end 
    else begin
        pcc <= 32'b0; // 复位时pc写0 
        add4 <= 32'h4; 
    end 
end 
assign pc=pcc;
clkpccadd4
004
144
248

        可以看出需要2次触发PC才能变成下一个地址。 

always @(negedge clk) // 时钟下降沿操作
begin
    if(!reset) 
    begin
        if(!halt) begin
            pcc = add4; //使用了新的add4
            add4 = pcc + 4;//使用了新的pc值
        end 
    end 
    else begin
        pcc = 32'b0; // 复位时pc写0 
        add4 = 32'h4; 
    end 
end 
assign pc=pcc;

 

clkpccadd4
004
148
2812

                 可以看出只要一个周期触发就能增加PC。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 目录 课程设计任务书 1 1.设计目的及设计原理 2 1.1设计目的 2 1.2设计原理 3 2.模型机的逻辑框图 3 3.指令系统及其指令格式 4 3.1指令系统 4 3.2指令格式 6 4.微程序的设计及其实现的方法 7 4.1微指令格式的设计 7 4.2后续微地址的产生方法 7 4.3 微程序入口地址的形成 8 5.模型机时序分析 10 6.指令执行流程 11 7.源程序,程序的指令代码及微程序 12 7.1 源程序 12 7.2 程序的指令代码 12 7.3微程序 13 8.实现过程 14 9.课程设计总结 19 课程设计任务书 学生姓名: 陈千 专业班级: 物联网1103班 指导教师: 程艳芬 工作单位:计算机科学与技术学院 题 目: 基本模型机的设计——加减法指令的实现 初始条件: 理论:学完"电工电子学"、"数字逻辑"、"汇编语言程序设计"、和"计算机组成原理"课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中加减法指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排: 周一:熟悉相关资料。 周二:系统分析,设计程序。 周三、四:编程并上实验平台调试 周五:撰写课程设计报告。 指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日 模型机的设计——加减法指令的实现 1.设计目的及设计原理 1.1设计目的 运用所学的知识,通过使用软件HKCPT掌握各个单元模块的工作原理,进一步将其组成完整的系统,构成一台基本的模型计算机,并了解程序编译、加载的过程,以及通过微单步、单拍调试理解模型机中的数据流向。 本实验主要是设计加减法指令的实现,将汇编语言程序设计,数字逻辑与或运算原理以及计算机组成原理3方面的知识结合到一起利用此软件平台实现连续几个数的加减法运算,从而了解逻辑运算运算单元的运行过程。 1.2设计原理 CPU是计算机的核心,它是通过指令和微指令的执行来工作的。指令是计算机要完成的某一项功能,每一条机器指令对应到执行的过程中是一段微程序。一段微程序含多条微指令,而一条微指令又含多个微命令。一个微命令驱动某个硬件部件执行某种操作。通过这样一个关系,从而达到由计算机指令来驱动计算机各个硬部件的协调工作以实现一条指令的执行。 在之前的各个模块实验中,各模块的控制信号都是由实验者手动模拟产生的。而在真正的实验系统中,模型机的运行是在微程序的控制下,实现特定指令的功能。在本实验平台中,模型机从内存中取出、解释、执行机器指令都将由微指令和之相配合的时序来完成,即一条机器指令对应一个微程序。 2.模型机的逻辑框图 简单的模型计算机是由算术逻辑单元、微程序单元、堆栈寄存器单元、累加器,启停、时序单元、总线和存储器单元组成。 在模型机中,我们将要实现RAM的读写指令,寄存器的读写指令,跳转指令,ALU的加、减、与、或指令。把通用寄存器作为累加器A,进行左、右移等指令,整体构成一个单累加器多寄存器的系统。 整机的逻辑框图如下: 3.指令系统及其指令格式 3.1指令系统 本实验平台内采用的是8位数据总线和8位地址总线方式,设计指令系统时,主要考虑的是指令的类型,寻址方式和编码方式。 指令类型包括算术/逻辑运算类指令、移位操作类指令(带进位或不带进位)、数据传送类指令、程序跳转指令(有条件或无条件)、存储器操作类指令等。寻址方式包括直接地址寻址、寄存器直接寻址、寄存器间接寻址、立即数寻址等。指令格式的设定一般与机 的字长、存储器的容量以及指令的功能有关。主要包括操作码字段和地址码字段。本实验中操作码为8位,数据的传送单位为8位。 指令系统如下表: 指令助记符 指令功能 指令编码 微周期 微操作 取指微指令 T0 PC

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值