题目16-20

1、两寄存器交换值方式:

always @(posedge clk) begin
    a = b ;
end
always @(posedge clk) begin
    b = a;
end            
/*
    上述方式错误:2 个 always 块中的语句是同时进行的,但是 a=b 与 b=a 是无法判定执行顺序的,这就造成了竞争的局面;2 个 always 块中的语句是同时进行的,但是 a=b 与 b=a 是无法判定执行顺序的,这就造成了竞争的局面
*/

always @(posedge clk) begin
    a <= b ;
end
always @(posedge clk) begin
    b <= a;
end
/*
    正确交换:2 个 always 块中语句并行执行,赋值操作右端操作数使用的是上一个时钟周期的旧值,此时 a<=b 与 b<=a 就可以相互不干扰的执行,达到交换寄存器值的目的。
*/

always @(posedge clk) begin
    temp    = a ;
    a       = b ;
    b       = temp ;
end
/*
   正确交换:代码是顺序执行,也可以实现交换寄存器值的功能。
*/

重点题目:

2、verilog设计中,当发生违例时,该怎么处理:

        发生hold违例,牺牲setup保持hold;

        发生setup违例,修改设计;

        发生hold违例,添加延迟模块(buf),增加数据的延迟;

        发生setup违例,要降低工作频率,提高时钟周期,才可以解决,一般不推荐;

Tslacksu = Tclk +Tskew - Tco - Tsu - Tcomb Tslackh = Tco + Tcomb - Tskew 设计者只能从组合逻辑部分入手,因此不可能做到同时增大两者的slack,做以平衡才是我们的目的。

3、Verilog的算数运算中,11%-3的结果为2,-10%3的结果为-1;

因为在进行取模运算时,结果值的符号位采用模运算式里第一个操作数的符号位。

4、CPLD与FPGA都是通用可编程逻辑器件,两者区别?:

FPGA的集成度和复杂度均高于CPLD,所以FPGA可实现复杂逻辑电路设计。

FPGA工艺多为SRAM、flash等工艺,掉电后内信息消失,所以该类型需外配存储器;

CPLD工艺多为EEPROM等工艺,掉电后信息不消失,所以不用外配存储器。

5、可进行综合的verilog语句:

instantitation 实例化 可综合;

 以#开头的延时不可综合成硬件电路延时,综合工具会忽略所有延时代码,但不会报错。

 event在同步test bench时更有用,不能综合。

 不支持force和release的综合。

所有综合工具都支持的结构 always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter, generate ;

所有综合工具都不支持的结构 time,defparam,$finish,fork,join,initial,delays,UDP,wait 有些工具支持有些工具不支持的结构 casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while ;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值