当前位置: 首页 > article >正文

【Verilog】实验三 数码管实验

目录

一、实验目的:

二、实验内容:

三、实验要求:

四、实验步骤:


一、实验目的:

  1. 进一步熟悉Modelsim和VIVADO工具;
  2. 掌握7段数码管显示译码器;
  3. 掌握7段数码管数码管动态输出显示的方法。

二、实验内容:

  1. 实现按动开关键,在数码管上显示相应的十六进制数 0~F。(参考给定的已有工程文件Prep-IO)
  2. 实现开发板上的数码管动态显示0~F。

三、实验要求:

要求首先使用Modelsim软件进行功能仿真,然后使用VIVADO软件综合,并下载到开发板进行电路功能测试。

四、实验步骤:

1.采用VerilogHDL语言编程实现输入4位二进制,输出是8位数码管显示码。

2.用Modelsim进行功能仿真。

数码管译码模块

testbench

仿真

从仿真图上可以看出,对于相应的输入,输出结果是正确的

3.分别设计4位二进制数自动生成模块和数码管的译码模块。

4.在顶层文件将2个电路模块实例化,并进行相应的连线。

5.用VIVADO综合并将电路下载到开发板进行电路功能测试。

拨动SW0~7,显示对应的数字

拨动SW8~15,显示的结果

xc7k325tffg676-1

module 	 TOP_new(input  wire clk_200MHz_p,          
	             input  wire clk_200MHz_n,
				 
						input  wire[15:0]SW,
						
						output wire seg_clk,
						output wire seg_clrn,
						output wire seg_sout,
						output wire SEG_PEN				
					);
	
	clk_wiz_0 	  instance_name   (
								// Clock out ports
									.clk_out1(clk_100mhz),     // output clk_out1
								// Status and control signals
									.reset(1'b0), // input reset
									.locked(),       // output locked
								// Clock in ports
									.clk_in1_p(clk_200MHz_p),    // input clk_in1_p
									.clk_in1_n(clk_200MHz_n)     // input clk_in1_n
								  );
							  																	
	wire[31:0]Div;
    wire[7:0] out;
    wire[3:0] BCDCode;
	wire[7:0] Seg0 = (SW[0]) ? out : 8'hFF;
	wire[7:0] Seg1 = (SW[1]) ? 8'b10011111 : 8'hFF;
	wire[7:0] Seg2 = (SW[2]) ? 8'b00100101 : 8'hFF;
	wire[7:0] Seg3 = (SW[3]) ? 8'b00001101 : 8'hFF;
	wire[7:0] Seg4 = (SW[4]) ? 8'b10011001 : 8'hFF;
	wire[7:0] Seg5 = (SW[5]) ? 8'b01001001 : 8'hFF;
	wire[7:0] Seg6 = (SW[6]) ? 8'b01000001 : 8'hFF;
	wire[7:0] Seg7 = (SW[7]) ? 8'b00011111 : 8'hFF;
	BCDCode U1(.clk(Div[25]),.rst(SW[15]),.BCDCode(BCDCode));
	Seg7BCD U2(.out(out),.in(BCDCode));
	wire[63:0] disp_data =  {Seg0,Seg1,Seg2,Seg3,Seg4,Seg5,Seg6,Seg7};
	
	clk_div       U8(clk_100mhz,1'b0,SW[2],Div,CK);
	
	P2S 			  #(.DATA_BITS(64),.DATA_COUNT_BITS(6)) 
						  P7SEG (clk_100mhz,
									1'b0,
									Div[20],
									disp_data,
									seg_clk,
									seg_clrn,
									seg_sout,
									SEG_PEN
									);
	
endmodule

zidong.v

module zidong(input clk,
			     output reg[3:0] out);
	always@(posedge clk)
		 out=out+1;
endmodule

top.v(修改)

	wire[7:0] Seg0 = (SW[8]) ? 8'b00000001 : 8'hFF;
	wire[7:0] Seg1 = (SW[9]) ? 8'b00001001 : 8'hFF;
	wire[7:0] Seg2 = (SW[10]) ? 8'b00010001 : 8'hFF;
	wire[7:0] Seg3 = (SW[11]) ? 8'b11000001 : 8'hFF;
	wire[7:0] Seg4 = (SW[12]) ? 8'b01100011 : 8'hFF;
	wire[7:0] Seg5 = (SW[13]) ? 8'b10000101 : 8'hFF;
	wire[7:0] Seg6 = (SW[14]) ? 8'b01100001 : 8'hFF;
	wire[7:0] Seg7 = (SW[15]) ? 8'b01110001 : 8'hFF;


	wire[7:0] out;
	wire[3:0] out1;
	
	zidong U1(.clk(DIv[25]),.out(out1));
	shumaguan U2(.out(out),.in(out1));

	wire[7:0] Seg[0]=(SW[14]&SW[15])?out:8'hFF;




	wire[7:0] Seg0 = (SW[0]) ? 8'b00000011 :
					(SW[8]) ? 8'b00000001 :
					(SW[14]&SW[15])?out:8'hFF;
	
	wire[7:0] Seg1 = (SW[1]) ? 8'b10011111 :
					(SW[9]) ? 8'b00001001 : 8'hFF;
	
	wire[7:0] Seg2 = (SW[2]) ? 8'b00100101 :
					(SW[10]) ? 8'b00010001 : 8'hFF;

	wire[7:0] Seg3 = (SW[3]) ? 8'b00001101 :
					(SW[11]) ? 8'b11000001 : 8'hFF;

	wire[7:0] Seg4 = (SW[4]) ? 8'b10011001 :
					(SW[12]) ? 8'b01100011 : 8'hFF;

	wire[7:0] Seg5 = (SW[5]) ? 8'b01001001 : 
					wire[7:0] Seg5 = (SW[13]) ? 8'b10000101 : 8'hFF;

	wire[7:0] Seg6 = (SW[6]) ? 8'b01000001 :
					(SW[14]) ? 8'b01100001 : 8'hFF;

	wire[7:0] Seg7 = (SW[7]) ? 8'b00011111 : 
					 (SW[15]) ? 8'b01110001 : 8'hFF;


http://www.kler.cn/a/420319.html

相关文章:

  • Python的秘密基地--[章节2]Python核心数据结构
  • 003-SpringBoot整合Pagehelper
  • 微服务搭建----springboot接入Nacos2.x
  • Jmeter进阶篇(28)结合AI做性能测试:开启性能测试自动化新篇章
  • 【MySql】navicat连接报2013错误
  • Shire 1.1 发布:更强大的交互支持,升级 AI 智能体与 IDE 的整合体验
  • 使用 Pytorch 构建 Vanilla GAN
  • Jenkins环境搭建及简单介绍
  • 十、软件设计架构-微服务-服务调用Dubbo
  • Ubuntu24.04初始化教程(包含基础优化、ros2)
  • 高效处理 iOS 应用中的大规模礼物数据:以直播项目为例(1-礼物池)
  • Ajax:回忆与节点
  • 使用R语言优雅的获取任意区域的POI,道路,河流等数据
  • StarRocks存算分离在得物的降本增效实践
  • 基于Pyside6开发一个通用的在线升级工具
  • Liunx系统编程——shell的简单实现
  • HO-VMD-TCN西储大学轴承故障诊断
  • 分治的思想(力扣965、力扣144、牛客KY11)
  • SQL进阶技巧:非等值连接--单向近距离匹配
  • python 的while break continue 嵌套循环
  • 人工智能-卷积神经网络(学习向)
  • 如何搭建JMeter分布式集群环境来进行性能测试
  • 【N 卡 掉驱动 Driver 】NVML ERROR: Driver Not Loaded
  • 做异端中的异端 -- Emacs裸奔之路3: 上古神键Hyper
  • C++,Python,Javascripts操作文件读写,字符串分割
  • 什么是JAVA反射??? 常用的API有哪些???怎么获取Class对象.....