已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
:[例]
例7.1
`timescale 10 ns/1 ns
module test ;
  reg set ;
  parameter p = 1.6 ;
  initial
    begin
      $monitor ($time , , "set = " , set) ;
      #p set = 0 ;
      #p set = 1 ;
    end
endmodule


输出结果:
0 set = x
2 set = 0
3 set = 1

用上述例子熟悉时间度量函数$time(整型)$realtime(实型)。

例7.3  初始化存储器
module test ;
  reg [7:0] memory [7:0] ;
  //8个8位的存储单元
  integer i ;

  initial
    begin
      $readmemb ("init.dat",memory) ;
      //读取存储器init.dat到存储器给定地址
      for (i = 0; i < 8; i = i + 1)
        $display ("Memory [%d] = %b",i,memory[i]) ;
    end
endmodule

init.dat文件内容:
@002
11111111  01010101
00000000  10101010

@006
1111zzzz  00001111

输出结果:
Memory [0] = xxxxxxxx
Memory [1] = xxxxxxxx
Memory [2] = 11111111
Memory [3] = 01010101
Memory [4] = 00000000
Memory [5] = 10101010
Memory [6] = 1111zzzz
Memory [7] = 00001111

通过上面的例子,熟悉任务$readmemb(二进制),$readmemh(十六进制)。

例7.4
`timescale 1 ns/1 ns
module random_pules(dout) ;
  output [9:0] dout ;
  reg [9:0] dout ;

  integer delay1 , delay2 , k ;

  initial
  begin
    #10 dout = 0 ;
    for (k = 0; k < 100; k = k + 1)
    begin
      delay1 = 20 * ({$random} % 6) ;
      delay2 = 20 * ({$random} % 3) ;
      #delay1 dout = 1 << ({$random} % 10) ;
      #delay2 dout = 0 ;
    end
  end
endmodule

用上述例子熟悉随机数任务{$random}((-b+1)到(b-1)中随机数),$random((b-1)到0中随机数)。

例7.9  预处理命令
//文件的包含预处理
(1)文件aaa.v
module aaa(a,b,out) ;
  input a , b ;
  output out ;
  wire out ;
    assign out = a ^ b ;
endmodule

(2)文件bbb.v
`include "aaa.v"
module bbb(c , d , e ,out) ;
  input c , d , e ;
  output out ;
  wire out_a ;
  wire out ;
  aaa aaa(.a(c),.b(d),.out(out_a)) ;
  assign out = e & out_a ;
endmodule

用上述例子熟悉预处理命令:`include , `define , `timescale , `ifdef , `else , `endif。

:总复习练习:
设计电路

module AOI (A,B,C,D,F) ;
  input A,B,C,D ;
  output F ;
  assign F = ((A&b)&(C&D)) ;
endmodule

设连接线为W1,W2,W3,W4,W5,连入已知全加器模块FullAdder。
//已知:
module FullAdder (A,B,Cin,Sum,Cout) ;
  input A,B,Cin ;
  output Sum,Cout ;
endmodule

//接口电路:
module Top ;
  FullAdderFA (.sum(W1),.Cout(W2),.Cin(W3),.A(W4),.B(W5)) ;
endmodule

某测试模块语句排序。
答案:
module TestFixture ;
  reg A,B,SSEL ;
  wire F ;
  MUX2M(SEL,A,B,F) ;
  initial
  begin
    SEL = 0 ;
    A = 0 ;
    B = 0 ;
    #10 A = 1 ;
    #10 SEL = 1 ;
    #10 B = 1 ;
  end
  
  initial
    $monitor (SEL,A,B,,F) ;//两个逗号中间空的,表示空格一个。
endmodule

指出下面信号的最高位和最低位。
reg [1:0] SEL ;
input [0:2] IP ;
wire [16:23] A ;

答案:
最高位:SEL[1] , IP[0] , A[16] ;
最低位:SEL[0] , IP[2] , A[23] ;

P,Q,R都是4bit的输入矢量,下面哪一种是正确的表达形式?
XXXXput P[3:0] , Q , R ;
XXXXput P , Q , R[3:0] ;
XXXXput P[3:0] , Q[3:0] , R[3:0] ;
XXXXput [3:0] P , [3:0] Q , [3:0] R ;
XXXXput [3:0] P,Q,R;

答案:5.


请将正确答案填入方括号。
1.(0:2)
2.(P:0)
3.(Op1:Op2)
4.(7:7)
5.(2:0)
6.(7:0)

reg [7:0] A ;
reg [2:0] Sum , Op1 , Op2 ;
reg P , OneBit ;

initial
begin
  Sum = Op1 + Op2 ;
  P = 1 ;
  A[] = Sum ;
end

答案:5.

选择:
XXXXg [7:0] A ;
  A = 1'hFF ;
A.8'b0000_0011
B.8'h03
C.8'b1111_1111
D.8'b11111111
答:A和B.

XXXXg [7:0] B ;
  B = 8'bZ0 ;
A.8'0000_00Z0
B.8'bZZZZ_0000
C.8'b0000_ZZZ0
D.8'bZZZZ_ZZZ0
答:D.

指出变量类型:
XXXXsign A = B ;
XXXXways #1
    Count = C + 1 ;

答案:A(wire) , B(wire/reg) , Count(reg) , C(wire/reg)
这第九题我特么的也不会。。。。。。
设ADDRESS为5’b0X000下列程序结束后A和B值为多少?
A = 0 ;
B = 0 ;
casex(ADDRESS)
  5'b00???: A = 1 ;
  5'b01???: B = 1 ;
  5'b10?00,
  5'b11?00: begin
              A = 1 ;
              B = 1 ;
            end
endcase

答案:A = 1 , B = 0。

假设事件A分别在10,20,30发生。B一直是X。问50时,Count的值为多少?
reg [7:0] Count ;
initial
  Count = 0 ;
always
begin
  @(A) Count = Count + 1 ;
  @(B) Count = Count + 1 ;

end

答案:Count = 1。是个顺序块,两条必须都执行完才always重复执行。因为B一直是X,所以执行到@(B) Count = Count + 1 ;就不往下进行了。

结束后I , J , A , B值为多少?
reg [2:0] A ;
reg [3:0] B ;
integer I , J ;
initial
begin
  I = 0 ;
  A = 0 ;
  I = I - 1 ;
  J = I ;
  A = A - 1 ;
  B = A ;
  J = J + 1 ;
  B = B + 1 ;
end

答案:
I = -1
J = 0
A = 7
B = 8

假设V的值变化成-1时,执行always块后,Count值为多少?
reg [7:0] V ;
reg [2:0] Count ;

always @(V)
begin
  Count = 0 ;
  while(~V[Count])
  Count = Count + 1 ;
end

答案:Count = 0 ;8位数据-1就是1111_1111,按位取反就是0000_0000,结果while就没有执行。还是初始化时候的Count = 0。

V的值是多少?
reg [3:0] A ;
reg V , W ;
integer K ;
...
A = 4'b1010 ;
for(K = 2; K >= 0; K = K - 1)
begin
  C =  V ^ A[K] ;
  W = A[K] ^ A[K + 1] ;
end

答案:第二位和第四位取反,别的不变。因为按位异或运算,与0不变,与1取反。A = 4'b1010。

给出片段代码,问它可能是什么电路的部分代码?
always @(posedge Clock)
  if (A)
    C = B ;

1.不能综合。
2.一个上升沿触发器和一个多路器。
3.一个输入时A,B,Clock的三输入与门。
4.一个透明锁存器。
5.一个带clock有使能引脚的上升沿触发器。

答案:2和5。

下列程序中,always状态将描述一个带异步Nreset和Nset输入端的上升沿触发器。括号内应填入什么?
always @()
  if (! Nreset)
    Q <= 0 ;
  else if (! Nset)
    Q <= 1 ;
  else
    Q <= D ;

XXXXgedge Nset or posedge Clock
2.posedge Clock
XXXXgedge Nreset or posedge Clock
XXXXgedge Nreset or negedge Nset or posedge Clock
XXXXgedge Nreset or negedge Nset

答案:4。上升沿触发器说的是时钟Clock。由代码知Nreset和Nset低电平有效。

综合后结果。
1.
always @(posedge Clock)
begin
  A <= B ;
  if (C)
    A <= 1'b0 ;
end

答案:带同步复位端的触发器。

2.
always @(A or B)
  case (A)
    1'b0: F = B ;
    1'b1: G = B ;
  endcase
答案:不能综合或与预想不一致。

3.
always @(posedge A or posedge B)
  if (A)
    C <= 1'b0 ;
  else
    C <= D ;
答案:带异步复位端的触发器。

4.
always @(posedge Clk or negedge Rst)
  if (Rst)
    A <= 1'b0 ;
  else
    A <= B ;
答案:不能综合或与预想不一致。

会产生几个触发器?
always @(posedge Clk)
begin: Blk
  reg B , C ;
  C = B ;
  D <= C ;
  B = A ;
end

答案:两个寄存器,B和C。

程序语句排序。
reg FF1 , FF2 , FF3;
always @(posedge Clock)
begin
  FF1 <= Input ;
  FF2 <= FF1 ;
  FF3 <= FF2 ;
  Output <= FF3 ;
end

根据SEL与OP的关系,补全程序:
关系:
SEL:OP
000:1
001:3
010:1
011:3
100:0
101:3
110:0
111:3

答案:
casex(SEL)
3'bXX1:  OP = 3 ;
3'b0X0:  OP = 1 ;
3'b1X0:  OP = 0 ;
endcase

选出正确的表达式:
3.! 4'b1011 || ! 4'b0000 = 1'b1
5.1'b0 || 1'b1 = 1b'1
9.4'b0001 || 4'b0000 = 1'b1

填入display的正确值。
integer I ;
reg [3:0] A ;
reg [7:0] B ;
initial
begin
  I = -1 ;
  A = I ;
  B = A ;
  $display ("%b",B) ;  //(00001111)
  A = A / 2 ;
  $display ("%b",A) ;  //(0111)
  B = A + 14 ;
  $display ("%d",B) ;  //(21)
  A = A + 14 ;
  $display ("%d",A) ;  //(5)
  A = -2 ;
  I = A / 2 ;
  $display ("%d",I) ;  //(7)
end

{1,0}和下面那个值相等?
答案:5. 64’H0000_0001_0000_0000
不写位宽默认为32位位宽。

补全代码:
//file defs.v
module defs ;
  parameter Reset = 8'b10100101 ;
endmodule

//file M.v
module M;
  `include "defs.v"
  if (OP == <XXXXXXXset>)
    Bus = 0 ;
endmodule

调用Pipe模块时,想把Depth的值更改为8,怎么做。
module Pipe(IP , OP)
  parameter Option = 1 ;
  parameter Depth = 1 ;
  ...
endmodule

Pipe #(1,8) P1(IP1 , OP1) ;
解答:#(1,8)中1对应参数Option,8对应参数Depth。

若想将P1中Depth值变为16,怎么做?
module Pipe (IP , OP) ;
  parameter Option = 1 ;
  parameter Depth = 1 ;
  ...
endmodule

module
  Pipe P1(IP1 , OP1) ;
  defparam XXXXXpth = 16 ;
endmodule

我特么的又不会了。。。。。。
下面代码,每次赋值都赋的什么值。
reg [7:0] V
initial
begin
  V = 8'b0 ;  //8'b0000_0000
  V = 8'b1 ;  //8'b0000_0001
  V = 8'bX ;  //8'bXXXX_XXXX
  V = 8'BZX ;  //8'bZZZZ_ZZZX
  V = 8'BXXZZ ;  //8'bXXXX_XXZZ
  V = 8'b1x ;  //8'b0000_001X
end
文号 / 534713

十步芳草
名片发私信
学术分 0
总主题 17 帖总回复 140 楼拥有证书:笔友
注册于 2013-06-11 10:39最后登录 2018-01-10 00:58
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步

个人简介

暂未填写
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传,正在处理中
空空如也~
处理中...
处理失败
加载中...
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
插入公式
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
ID: {{user.uid}}