第4章VerilogHDL代码EDA技术Word格式.docx
《第4章VerilogHDL代码EDA技术Word格式.docx》由会员分享,可在线阅读,更多相关《第4章VerilogHDL代码EDA技术Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
reset,
data_in,
dff_out
);
//InterfaceDeclaration
inputclock;
inputreset;
input[7:
0]data_in;
output[7:
0]dff_out;
wireclock;
wirereset;
wire[7:
0]dff_out;
//InternalDeclaration
reg[7:
0]dff;
//MainBlock
always@(posedgeresetorposedgeclock)
begin
if(reset)dff<
=8’b0;
elsedff<
=data_in;
end
assigndff_out=dff;
endmodule
二、计数器
4位10进制计数器
4_counter
4_counter.v
module4_counter(
cnt_out
output[3:
0]cnt_out;
wire[3:
Reg[3:
0]cnt;
if(reset)cnt<
=0;
elsebegin
if(cnt==4’b1001)cnt<
elsecnt<
=cnt+1;
assigncnt_out=cnt;
三、移位寄存器
8位移位寄存器,每次循环右移2位,控制端:
=0时锁存,=1时移位。
8_shifter
8_shifter.v
8位移位寄存器
module8_shifter(
control_in,
data_in,
data_out
inputcontrol_in;
input[7:
0]data_in;
0]data_out;
wirecontrol_in;
wire[7:
reg[7:
0]data;
if(reset)data<
if(control_in==0)data<
elsedata<
={data[1:
0],data[7:
2]};
assigndata_out=data;
四、数据选择器
4通道数据选择器,选择端位数:
2,数据位宽度:
4
4_1selector
4_1selector.v
4通道数据选择器
module4_1selector(
//clock,
//reset,
select_in,
channel1_in,
channel2_in,
channel3_in,
channel4_in,
//inputclock;
//inputreset;
input[1:
0]select_in;
input[3:
0]channel1_in;
0]channel2_in;
0]channel3_in;
0]channel4_in;
//wireclock;
//wirereset;
wire[1:
wire[3:
reg[3:
0]data;
always@(select_inorchannel1_inorchannel2_inorchannel3_inorchannel4_in)
case(select_in)
2’b00:
data=channel1_in;
2’b01:
data=channel2_in;
2’b10:
data=channel3_in;
default:
data=channel4_in;
endcase
assigndata_out=data;
/*assigndata_out=(select_in==2’b00)?
channel1_in:
((select_in==2’b01)?
channel2_in:
((select_in==2’b10)?
channel3_in:
channel4_in
)
*/
五、编码器
4-2线编码器,4位输入,2位输出,1位错误检测输出
4_2encoder
4_2encoder.v
8-3线编码器
module4_2encoder(
error_out,
encoder_out
outputerror_out;
output[1:
0]encoder_out;
//wireclock;
//wirereset;
Wire[3:
Wireerror_out;
Wire[1:
Reg[1:
0]encoder;
//encoder_out
always@(data_in)
case(data_in)
4’b0001:
encoder=2’b00;
4’b0010:
encoder=2’b01;
4’b0100:
encoder=2’b10;
4’b1000:
encoder=2’b11;
assignencoder_out=encoder;
//error_out
assignerror_out=(data_in==4’b0001||data_in==4’b0010||
data_in==4’b0100||data_in==4’b1000)?
0:
1’b1;
第二节状态机
功能:
控制模块工作流程,相当于模块的骨架,对整个模块的功能起控制和协调作用,每个模块module一般只使用一个状态机。
分类:
(1)Moore状态机:
时序逻辑的输出仅取决于当前状态;
(2)Mealy状态机:
时序逻辑的输出不仅取决于当前状态,还取决于输入。
一、Moore状态机
reg[1:
0]state;
//ParameterDeclaration
parameterIDLE=2’b00,
STATE1=2’b01,
STATE2=2’b10,
BLOCK_END=2’b11;
if(reset)state<
=IDLE;
case(state)
IDLE:
state