2021-06-11

一、实验目的

运用Quartus软件与Modelism联合仿真

二、实验内容运用Quartus软件与Modelsim软件尝试建立一个门级模型
三、实验原理按照视频上的内容,书写和运行代码,完成实验和仿真
四、实验工具电脑、Quartus软件与Modelsim软件
五、实验过程截屏及代码

实验截图:
实验一:

实验代码:

module ex8_1(clock,reset,x,y1,y2);
input clock,reset;
input x;
output y1,y2;
reg y1,y2;

reg[3:0] cstate,nstate;

parameter s0=4'b0001,s1=4'b0010,     
          s2=4'b0100,s3=4'b1000;
          
always @(posedge clock or posedge reset)    
begin
  if(reset)
    cstate<=s0;
  else
    cstate<=nstate;
end

always @(cstate or x)           
begin
  case(cstate)
  s0:begin
       if(x==0)
         nstate=s1;
       else
         nstate=s3;
     end
  s1:begin
       if(x==0)
         nstate=s2;
       else
         nstate=s0;
     end
  s2:begin
       if(x==0)
         nstate=s3;
       else
         nstate=s1;
     end
  s3:begin
       if(x==0)
         nstate=s0;
       else
         nstate=s2;
     end
  default:nstate=s0;
  endcase
end

always @(cstate or x)      
begin
  case(cstate)
  s0:begin
       if(x==0)
         y1=1;
       else
         y1=0;
     end
  s1:begin
       if(x==0)
         y1=0;
       else
         y1=0;
     end
  s2:begin
       if(x==0)
         y1=0;

实验二:
    

实验代码:

module my_rs(reset,set,q,qbar);
input reset,set;
output q,qbar;

nor #(1) n1(q,reset,qbar);
nor #(1) n2(qbar,set,q);

endmodule
 
module tb_71;
reg set,reset;
wire q,qbar;

initial
begin
    set<=0;reset<=1;
#10 set<=0;reset<=0;
#10 set<=1;reset<=0;
#10 set<=1;reset<=1;
end

my_rs rs1(reset,set,q,qbar);

initial
$monitor($time,"set= %b,reset= %b,q= %b,qbar= %b",set,reset,q,qbar);

endmodule
实验三:

实验代码:

module div2(clk, reset, start, A, B, D, R, ok, err);
   parameter n = 32;
   parameter m = 16;
   
   input clk, reset, start;
   input [n-1:0] A, B;
   output [n+m-1:0] D;
   output [n-1:0] R;
   output ok, err;
   
   wire invalid, carry, load, run;
   
   div_ctl UCTL(clk, reset, start, invalid, carry, load, run, err, ok);
   div_datapath  UDATAPATH(clk, reset, A, B, load, run, invalid, carry, D, R);
   
endmodule

module div_ctl(clk, reset, start, invalid, carry, load, run, err, ok);
   parameter n = 32;
   parameter m = 16;
   parameter STATE_INIT = 3'b001;
   parameter STATE_RUN = 3'b010;
   parameter STATE_FINISH = 3'b100;
   input clk, reset, start, invalid, carry;
   output load, run, err, ok;
   
   reg [2:0] current_state, next_state;
   reg [5:0] cnt;
   reg load, run, err, ok;
    
   always @(posedge clk or negedge reset)
   begin
      if(!reset) begin
         current_state <= STATE_INIT;
         cnt <= 0;
      end else begin
         current_state <= next_state;
    
 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值