特权同学《Verilog边码边学》P16 112 条件判断if与分支判断case语句的使用 作业答案 时序逻辑8-3编码器

题目

 程序

design

`timescale 1ns/1ps
module vlg_design(
	input i_clk,
	input i_rst_n,
	input[7:0] i_data,
	output[2:0] o_data

    );

reg[3:0] r_data;
	
always @(posedge i_clk)	
	if(!i_rst_n) r_data <= 'b0;
	else if(i_data == 8'b00000001) r_data <= 3'b000;
	else if(i_data == 8'b00000010) r_data <= 3'b001;
	else if(i_data == 8'b00000100) r_data <= 3'b010;
	else if(i_data == 8'b00001000) r_data <= 3'b011;
	else if(i_data == 8'b00010000) r_data <= 3'b100;
	else if(i_data == 8'b00100000) r_data <= 3'b101;
	else if(i_data == 8'b01000000) r_data <= 3'b110;
	else if(i_data == 8'b10000000) r_data <= 3'b111;
	else ;
	
	
/*always @(posedge i_clk)	
	if(!i_rst_n) r_data <= 'b0;
	else begin
		case(i_data)
			8'b00000001: r_data <= 3'b000;
			8'b00000010: r_data <= 3'b001;
			8'b00000100: r_data <= 3'b010;
			8'b00001000: r_data <= 3'b011;
			8'b00010000: r_data <= 3'b100;
			8'b00100000: r_data <= 3'b101;
			8'b01000000: r_data <= 3'b110;
			8'b10000000: r_data <= 3'b111;
			default ;             
		endcase
	
	end*/

assign o_data = r_data;
	
	
	
endmodule

testbench

`timescale 1ns/1ps
module testbench_top();
	

//参数定义

`define CLK_PERIORD		10		//时钟周期设置为10ns(100MHz)	


//接口申明
	
reg i_clk;
reg i_rst_n;
reg[7:0] i_data;
wire[2:0] o_data;

	
//对被测试的设计进行例化
	
vlg_design		uut_vlg_design(
	.i_clk(i_clk),
	.i_rst_n(i_rst_n),
	.i_data(i_data),
	.o_data(o_data)

    );	
	

//复位和时钟产生

	//时钟和复位初始化、复位产生
initial begin
	i_clk <= 0;
	i_rst_n <= 0;
	#1000;
	i_rst_n <= 1;
end
	
	//时钟产生
always #(`CLK_PERIORD/2) i_clk = ~i_clk;	


//测试激励产生

integer i;

initial begin

	i_data <= 'b0;
	@(posedge i_rst_n);	//等待复位完成
	
	@(posedge i_clk);
	for(i=0;i<8;i=i+1) begin
		i_data <= 'b0;
		i_data[i] <= 'b1;
		@(posedge i_clk);
	end
	
	@(posedge i_clk);
	
	
	$stop;
end


endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值