
计算机组成原理
文章平均质量分 55
繁星伴晚安
热爱诗和代码
展开
-
【计算机组成原理】多周期 CPU 设计与实现
多周期CPU设计(Verilog)多周期CPU设计与实现原创 2021-07-02 21:27:05 · 5679 阅读 · 10 评论 -
【计算机组成原理】单周期CPU设计与实现-十条指令CPU
自己在图上画出来指令的执行过程就会很清晰明了。首先确认有哪些模块,PC,指令存储器,CU,ACC,ALU,数据存储器,像多路选择器,符号位扩展模块都是根据指令后来添加的。再确认模块的输入信号和输出信号。当然,我也一下子无法把每个模块的输入信号和输出信号的数量确定好,这是一个增量过程,根据不同的指令变化而变化,但是大致还是能确定一些的。然后,在纸上画出每条指令的执行过程。比如CLA指令,一条指令从指令存储器出来,操作码送入CU,剩余的部分根据指令需求送入不同模块。从CU出来的是ACC的写信号,也有alu的操原创 2021-06-23 18:58:50 · 4216 阅读 · 3 评论 -
【计算机组成原理】单周期CPU设计与实现-单指令 CPU
(Verilog)单周期CPU设计单周期CPU设计与实现原理分析原创 2021-06-21 10:37:46 · 6386 阅读 · 4 评论 -
【计算机组成原理】实验三 CPU 部件实现之 PC 和半导体存储器 RAM
1. 使用 Verilog 完成程序计数器 PC 的设计,要求: PC 为 8 位计数器module PC(clk,rst,y);input clk,rst;output y;reg[7:0] y;initial y = 0;always@(posedge clk or negedge rst)begin if(!rst) y = 0; else y = y + 1;endendmodulemodule test( );re原创 2021-06-02 16:59:30 · 2710 阅读 · 0 评论 -
【计算机组成原理】实验二、CPU 部件实现之 ALU 和寄存器堆
1. 使用 Verilog 完成 ALU 的设计,并编写测试仿真文件验证其正确性。要求: ALU 支持 16 位的加、减、与、或以及移位运算。module ALU(a,b,op,y);input[15:0]a,b;input[3:0]op;output y;reg[15:0]y;always@(*)begin case(op) //算术运算 4'd0: y = a + b; 4'd1: y = a - b; 4'd2: y原创 2021-06-02 15:56:48 · 5172 阅读 · 0 评论 -
【verilog】时序逻辑的练习
实现D触发器,有输入信号d,时钟信号clk,输出信号qmodule top(d,clk,q);input d,clk;output q;reg q;always @(posedge clk)begin q <= d;endmodule test( );reg d,clk;wire q;top f(.d(d),.clk(clk),.q(q));initial begin clk = 1;d = 0; #20 d = 1; #20 d =原创 2021-05-29 12:36:01 · 1378 阅读 · 0 评论 -
【计算机组成原理】I/O设备与主机信息传送的控制方式
程序查询方式准备阶段,在CPU的寄存器中设置好主存缓冲区的首地址和计数值首先,cpu通过命令线发出启动指令去启动设备,然后在地址线发送地址码,与之匹配对应的I/O接口中SEL有效,接口会将I/O的数据送至接口中数据缓冲寄存器,当完成这一工作后,D = 1,B = 0,表示外设准备好了。针对单设备,CPU启动设备之后,会一直发出测试指令,查询I/O设备是否准备就绪,如果准备就绪就会发出传送指令,进行传送数据。针对多设备,CPU发出启动指令去启动设备相对于设备将数据送至接口中的数据缓冲寄存器所花费的原创 2021-05-29 11:48:58 · 1568 阅读 · 0 评论 -
【verilog】组合逻辑练习
给定一个八位二进制数,求出其1的个数module sum(x,y);input[7:0] x;output y;reg[3:0] y;integer i;always @(*)begin y = 4'd0; for(i=0;i<8;i = i+1)begin if(x[i] == 1) y = y + 1; endendendmodulemodule test( );reg[7:0] x;wire[3:0]原创 2021-05-28 22:50:22 · 1013 阅读 · 0 评论 -
【Verilog】时序逻辑(计数器和随机码发生器)
计数器module counter(clk,res,y);input clk,res;output y;reg[7:0] y;wire[7:0] sum;assign sum = y+1;always @(posedge clk or negedge res)if(~res)begin y <= 0;endelse begin y <= sum;endmodule test( );reg clk,res;wire[7:0] y原创 2021-05-27 23:35:35 · 660 阅读 · 0 评论 -
【Verilog】组合逻辑(补码转换和七段译码逻辑设计)
给定一个数,求其补码module comp_conv(a,a_comp);input[7:0] a;output[7:0] a_comp;wire[6:0] b;wire[7:0] y;//负数的补码assign b = ~a[6:0];assign y[6:0] = b+1;assign y[7] = a[7];assign a_comp = a[.原创 2021-05-27 09:16:56 · 1069 阅读 · 0 评论 -
【Verilog】组合逻辑(多路选择器设计)
module fn_sw( A, B, sel, Y );input A;input B;input sel;output Y;assign Y = sel ? (A^B) :(A&B);endmodulemodule fn_sw( A, B, sel, Y );input A;input B;.原创 2021-05-26 16:14:34 · 2949 阅读 · 0 评论 -
【Verilog】基本逻辑门代码(二)
与门//与门设计module and_gate( A, B, Y );input A;input B;output Y;assign Y = A & B;endmodulemodule test( );reg aa;reg bb;wire yy;and_gate f(.A(aa),.B(bb),.Y(yy));initial begin // 按时间定义变量的值原创 2021-05-25 23:48:20 · 14475 阅读 · 4 评论 -
【Verilog】基本逻辑门代码(一)
Verilog零基础入门原创 2021-05-22 21:07:41 · 2297 阅读 · 0 评论 -
Vivado 2019.1 使用教程
端口 模块和端口参数verilog中参数传递与参数定义中#的作用原创 2021-05-22 16:49:19 · 3087 阅读 · 0 评论 -
【计算机组成原理】优秀文章
如何理解时钟周期及公式CPU执行时间 = CPU时钟周期数/主频原创 2021-03-17 20:01:56 · 137 阅读 · 0 评论