ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

hnu 模型机时序部件的实现

2021-12-14 22:58:42  阅读:263  来源: 互联网

标签:begin en end clk negedge 部件 时序 hnu input


前五个Verilog代码实现

(不一定对,欢迎指正)
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

1. SM

module SM (
    input clk,sm_en,
    output reg sm
);
always @(negedge clk or negedge sm_en) begin
    if(sm==1'bz)begin sm=1'b0;end
    if(~sm_en)begin
        sm<=1'bz;
    end
    else begin
        sm<=~sm;
    end
end    
endmodule

2、指令寄存器IR

module IR (
    input clk,ir_ld,
    input [7:0] d,
    output reg [7:0] ir
);
always @(negedge clk or negedge ir_ld) begin
    if(~ir_ld)begin
        ir<=1'bz;
    end
    else begin
        ir<=d;
    end
end    
endmodule

3、状态寄存器PSW

module PSW (
    input clk,cf_en,zf_en,
    input cf,zf,
    output reg c,z
);
always @(negedge clk or negedge cf_en) begin
    if(~cf_en)begin
        c<=1'bz;
    end
    else begin
        c<=cf;
    end
end
always @(negedge clk or negedge zf_en) begin
    if(~zf_en)begin
        z<=1'bz;
    end
    else begin
        z<=zf;
    end
end    
endmodule

4、指令计数器PC

module PC (
    input clk,pc_inc,pc_ld,
    input [7:0] a,
    output reg[7:0] add
);
always @(negedge clk) begin
    if(pc_inc==1'b1&&pc_ld==1'b0)begin
        add<=add+1'b1;
    end
    else if(pc_inc==1'b0&&pc_ld==1'b1) begin
        add<=a;
    end
    else begin add<=add;end
end    
endmodule

5、通用寄存器组

module group (
    input clk,we,
    input [1:0] raa,rwba,
    input [7:0] i,
    output reg[7:0] s,d
);
reg[7:0] A=1'bx,B=1'bx,C=1'bx; 
parameter a=2'b00,b=2'b01,c=2'b10;   
always @(raa or rwba or A or B or C) begin
    case (raa)
    a:begin s=A;end
    b:begin s=B;end
    c:begin s=C;end
    default:begin s=1'bz;end
    endcase
    case (rwba)
    a:begin d=A;end
    b:begin d=B;end
    c:begin d=C;end
    default:begin d=1'bz;end
    endcase
end
always @(negedge clk) begin
    if(we==1'b0)begin
        case (rwba)
        a:begin A<=i;end
        b:begin B<=i;end
        c:begin C<=i;end
        endcase
    end
    else begin A<=A;end//it is useless
end
endmodule

标签:begin,en,end,clk,negedge,部件,时序,hnu,input
来源: https://blog.csdn.net/wen_wan_sheng/article/details/121941806

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有