当前位置:   article > 正文

基于verilog hdl的3-8译码器的设计与仿真——vivado2020.1中实现_3-8译码器设计与仿真

3-8译码器设计与仿真

基于verilog hdl的3-8译码器的设计与仿真——vivado2020.1中实现( 纯小白向,学会3-8译码器的设计与仿真以及vivado的基本使用)

本文旨在为学习verilog hdl的小白提供入门初试题目,及对vivado使用能有基本了解。

vivado创建工程

打开vivado,点击Create Project创建新工程
在这里插入图片描述
点击Next
在这里插入图片描述
创建自己的项目名及文件目录,项目名不可有空格与中文,目录最好为全英文,下面的勾勾会在目录下创建子文件夹,可默认勾选
在这里插入图片描述
这里默认即可,点击Next
在这里插入图片描述
此处为选择开发板的器件型号,目前不写开发板,直接默认即可,需要写时也可以后面再修改,点击Next。
在这里插入图片描述
点击Finish即完成了工程创建。
在这里插入图片描述

添加3-8译码器设计文件

创建工程后我们可以看到整个界面
在这里插入图片描述
然后我们来创建设计文件,在整个界面的Sources界面中右键选择最下面的Add Sources或者我们直接点击Sources界面的那个+号。
在这里插入图片描述
选择中间的添加设计文件,点击Next。
在这里插入图片描述
选择Create File
在这里插入图片描述
为设计文件写个名字,不可有中文和空格,然后后面就是点击ok,Finsih,yes,弹出的窗口都点击OK或者Yes就行。
在这里插入图片描述
等待Sources界面更新一下就可以看到创建的设计文件test,双击test将3-8译码器的代码写上去,并点击代码界面的保存图标。
在这里插入图片描述
下面是3-8译码器的设计代码,给了比较详细的注释。

module    dec_38(A,  E1,  E2_low,  E3_low,  Y_low);
	input  [2:0]  A;  //3位输入
	input  E1;  //高电平有效使能端
	input  E2_low;   //低电平有效使能端
	input  E3_low;   //低电平有效使能端
	output   [7:0]  Y_low;   //8位输出,低电平有效

	reg   [7:0]   Y_low;   //在always模块中的被赋值变量均为寄存器类型

always @ (A or E1 or E2_low or E3_low)   //行为语句模块,敏感信号
	begin
		if(E1 && ~E2_low && ~E3_low)    //使能输入有效
		    case(A)
			3'b000 : Y_low = 8'b11111110;
			3'b001 : Y_low = 8'b11111101;
			3'b010 : Y_low = 8'b11111011;
			3'b011 : Y_low = 8'b11110111;
			3'b100 : Y_low = 8'b11101111;
			3'b101 : Y_low = 8'b11011111;
			3'b110 : Y_low = 8'b10111111;
			3'b111 : Y_low = 8'b01111111;
            default : Y_low = 8'b11111111;
		endcase    //case模块结束
        else   //使能端无效情况
               Y_low = 8'b11111111;          
	end   //if模块结束

endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

创建仿真文件

为了验证设计代码,按照前面创建设计文件的方法,我们创建一个仿真文件
在这里插入图片描述
在这里插入图片描述
然后在Sources界面找到仿真文件双击,将仿真代码写入并保存
在这里插入图片描述
下面是写入的仿真代码。

module  sim1;   //声明模块
reg    [2:0]   A;
reg    E1;     //输入端用寄存器类型声明
reg    E2_low;
reg    E3_low;
wire    [7:0]    Y_low;   //输出端用网线类型声明
test    simu(A, E1, E2_low, E3_low,  Y_low);   //test为设计文件名,调用设计模块
initial   begin   //变量初始化
	E1 = 0;
	E2_low = 0;
	E3_low = 0;   //使能无效
	A = 3'b000;
	#100  //延时100ns
	E1 = 1;
	E2_low = 0;
	E3_low = 0;   //使能有效
	A = 3'b001;
	#100
	A = 3'b010;
	#100
	A = 3'b011;
	#100
	A = 3'b100;
	#100
	A = 3'b101;
	#100
	A = 3'b110;
	#100
	A = 3'b111;
end
//always  #100  A = A + 3'b001;   //always反复执行,每100ns输入加1
endmodule

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

[下面链接为仿真代码的写法,初学者可以参考https://blog.csdn.net/qq_41467882/article/details/82713257]
事实上设计文件也可以做仿真,但在后面要是烧录板子可能造成错误,所以尽量使用仿真文件做测试。

保存后右键Sources界面的仿真文件设置编译更新顺序,此处表示由系统自动决定
在这里插入图片描述
点击右边工具栏的仿真,选择行为仿真
在这里插入图片描述
此时出现仿真图形窗口,双击可以放大,并点击窗口中的Zoom fit即那个四向箭头的图形即可出现波形,按住ctrl或者shift加上鼠标滚轮可以实现波形的放大缩小或者平移。
在这里插入图片描述
在左边工具栏选中Open Elaborated Design可以看到自己设计的电路
在这里插入图片描述
点击Ok
在这里插入图片描述
最终可以看到自己设计的电路。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/437026
推荐阅读
相关标签
  

闽ICP备14008679号