Verilog编写通用模块

:移位寄存器, ALU, 多路选择器,二进制乘法器,模N计数器,约翰逊计数器,参数化比较器,约翰逊译码器

移位寄存器:

module unishiftregister(clk,reset,leftin,rightin,sel,loaddta,Q);
parameter Nbits = 4:

input clk,reset,leftin,rightin;
input [1:0] sel;
input [Nbits-1:0] loaddta;
output [Nbits-1:0] Q;
reg [Nbits-1:0] Q;

always @(posedge clk)
	if(reset==1)
		Q<=0;
	else 
		case(sel)
			2'b00: ;
			2'b01:Q<={Q[Nbits-2:0],leftin};
			2'b10:Q<={rightin,Q[Nbits-1:1]};
			2'b11:Q<=loaddta;
		endcase
endmodule

简单ALU(使用assign):

module ArithLogicUnit(A,B,OpCode,DataZ,CompZ);

parameter Nbits = 2;
input [Nbits-1:0] A,B;
input [1:0] Opcode;
output [Nbits-1:0] DataZ;
output CompZ;

parameter AND_OP=0,NAND_OP=1,GT_OP=2,XOR_OP=3;

assign DataZ = (Opcode == AND_OP)?  A & B:
			   (Opcode == NAND_OP)? ~(A&B):
			   (Opcode == XOR_OP)?  A`B:
			   'bx;

assign CompZ = (OpC
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值