(UVM验证学习18) Verilog手撕代码1-nowcode verilog入门题

异步复位的串联T触发器

主要是意识到T触发器是输入端0保持,输入端1反相;D触发器才是接收数据。

然后有个说法是异步复位同步释放,既能捕捉同步复位可能捕捉不到的复位信号,由于释放是同步的,又可以减少亚稳态的可能。

module Tff_2(
input wire data, clk ,rst,
output reg q
);
reg tmp_q;

always@(posedge clk , negedge rst) begin
	if(!rst)begin
		tmp_q <= 1'b0;
	end
	else begin
		if(data) tmp_q<=!tmp_q;
		else tem_q<=tmp_q;
	end
end
always@(posedge clk, negedge rst)begin
	if(!rst)begin
		q <= 1'b0;
	end
	else begin
		if(tmp_q) q<=!q;
		else q<=q;
	end
end
endmodule

奇偶校验

输出是线网类型,使用assign赋值

module odd_sel(
input [31:0] bus,
input sel,
output check
);
	assign check = sel ? ^bus : !(^bus); 
endmodule

移位运算与乘法

要注意的问题是out是11位的,但是d是8位的,使用移位进行乘法时,如果module内使用的reg也是8位的,可能会出现溢出的情况,比如我用一个reg [7:0]data存输入d,那么乘7就应该使

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值