计算机组成 vhdl cpu 实验 西安交大,西安交大计算机组成_实验三.doc

《西安交大计算机组成_实验三.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《西安交大计算机组成_实验三.doc》文档请在天天文库搜索。

1、实验三 时序电路基本部件设计一、实验目的1. 掌握VHDL\Verilog中时序模块电路的设计方法。2. 熟悉VHDL\Verilog中层次结构的设计方法。二、实验内容1. 利用进程语句完成一个触发器电路模块(使能端、复位)的设计。2. 利用进程语句完成寄存器和移位寄存器(包括串行输入输出、循环移位)电路模块的设计。3. 完成各种数字(个人学号末两位)进制的计数器。4. 分析时序电路部件的仿真波形。三、实验要求1. 分析各模块的的程序结构,画出其流程图。2. 画出模块的电路图。3. 分析电路的仿真波形,标出关键的数值。4. 记录设计和调试过程。四、实验代码及结果1、触发器代码:module shiyan31( input wire clk, input wire reset, input wire g, input wire din, output reg dout ); always 。

2、@(posedge clk)begin //使能端低有效,复位端高有效 if(g==1'b1)begin end if(reset==1'b1&&g==1'b0)begin dout<=1'b0; end if(reset==1'b0&&g==1'b0)begin dout<=din; end endEndmodule电路图:仿真:module shiyan31sim( ); reg clk,din,g,reset; wire dout; shiyan31 test( .clk(clk), .reset(reset), .dout(dout), .din(din), .g(g) ); initial begin clk<=0; din<=0; reset<=0; g<=0; #10 din<=1; #20 din<=0; #100 reset。

3、<=1; #30 reset<=0; #20 g<=1; #20 din<=1; #100 g<=0; end always begin #5 clk=~clk; endendmodule仿真结果:结果分析:当复位端有效时,输出变为由1变为0。使能端无效时,即使在clk上升沿,也无法将din传输给dout。当使能端有效切复位端无效时,在clk上升沿,电路将din传给dout。其完成了触发器的作用。2、 位移寄存器代码:module jcq( ain, clk, reset, aout ); input [7:0] ain; output reg [7:0] aout; input clk,reset; always @(posedge clk) begin if(!reset)begin aout<={ain[6:0],ain[7]}; end else。

4、 begin aout[7:0]<=8'b; end end Endmodule电路图:仿真代码:module sim( ); reg [7:0] ain; reg clk,reset; wire [7:0] aout; jcq test( .ain(ain), .clk(clk), .reset(reset), .aout(aout) ); initial begin clk=0; reset=1; ain=8'b; #50 reset=0;ain=8'b; #200 ain=8'b; #200 reset=1; end always begin #50 clk=~clk; endendmodule仿真结果:结果分析:输入,clk上升沿时,输出为,左移了一位。输入,clk上升沿时,输出为,左移了一位。在复位端有效时,输出变为0。即一个左移寄存器。3、51位计数器代码:module 。

5、jsq(ret,clk,cnt ); input clk,ret; output reg [5:0] cnt; parameter max=6'b; always @(posedge clk)begin if(ret)begin cnt<=6'b; end else begin if(cnt==max)begin cnt<=6'b; end else begin cnt<=cnt+6'b; end end endEndmodule电路图:仿真代码:module sim2( ); reg clk,ret; wire [5:0] cnt; jsq test(.clk(clk), .ret(ret), .cnt(cnt)); always begin #5 clk=~clk; end initial begin clk=1'b0; ret=1'b1; #10 ret=1'b0; endEndmodule仿真结果:结果分析:复位端有效时,将输出清零。复位端无效时,每到时钟上升沿,输出加一。逢51清0。图中输出为16进制表示,33即十进制中的51。即51位计数器。(个人学号末两位为51)五、调试和心得体会1、在源码中,凡是在always语句中值更改的变量应该为reg类型。2、在仿真中,输出应该为wire类型。3、仿真时要注意延迟的时间,才能使得输入与输出相关联。不恰当的延迟时间有时会使输入无法影响输出。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值