计算机组成原理实验——单周期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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值