【数电实验3】Verilog—1位十进制可逆计数器

这篇具有很好参考价值的文章主要介绍了【数电实验3】Verilog—1位十进制可逆计数器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【2022.04西南交大数电实验】

【2022.04.17 更新修改了一个错误:

assign CO = (upd & (Q == 4'd9)) | (~upd & (Q == 4'd0) & ~clr);

~clr改为了clr:

assign CO = (upd & (Q == 4'd9)) | (~upd & (Q == 4'd0) & clr);

另外 ,把代码修得整齐好看了一点】

【代码参考博主weixin_49270464,已进行适当修改,符合实验要求。本代码及波形已通过老师验收。仅供参考。】

module yck_1716_3_1(codeout, Q, clkin, clr, CO, upd, en, load, data);
	input clkin, clr, upd, en, load;
	input [3: 0] data;
	output [6: 0] codeout;
	output [3: 0] Q;
	output CO; 
	yck_1716_3_3(clkin, clr, Q, CO, upd, en, load, data);
	yck_1716_3_2(codeout, Q);
endmodule
module yck_1716_3_3(clkin, clr, Q, CO, upd, en, load, data);   //十进制计数器
	input  clkin, clr, upd, en, load;
	input  [3: 0] data;
	output [3: 0] Q;
	reg [3: 0] Q;
	output wire CO;
	always@(posedge clkin, negedge clr)
		if(!clr)			//异步清零
			Q <= 4'd0;
		else if(!load)		//同步置数(若为低电平则直接赋值,数码管显示本时刻数值)
			Q <= data;
		else if(en)		    //使能(en高电平)
			begin
				if(upd)			//同步置数,加法计数(upd=1)
					begin
						if(Q == 4'd9)
							Q <= 4'd0;
						else
							Q <= Q + 4'd1;
					end
				else			//同步置数,减法计数(upd=0)
					begin
						if(Q == 4'd0)
							Q <= 4'd9;
						else
							Q <= Q - 4'd1;
					end
			end
	assign CO = (upd & (Q == 4'd9)) | (~upd & (Q == 4'd0) & clr); 	//(upd为高电平且Q为9)或者(upd为低电平且Q为0且clk为0)
endmodule
module yck_1716_3_2(codeout, Indec);  //译码器
	input [3: 0] Indec;
	output [6: 0] codeout;
	reg [6: 0] codeout;
	always@(Indec)
	begin
		case(Indec)	
		4'b0000: codeout = 7'b1111110;
		4'b0001: codeout = 7'b0110000;
		4'b0010: codeout = 7'b1101101;
		4'b0011: codeout = 7'b1111001;
		4'b0100: codeout = 7'b0110011;
		4'b0101: codeout = 7'b1011011;
		4'b0110: codeout = 7'b1011111;
		4'b0111: codeout = 7'b1110000;
		4'b1000: codeout = 7'b1111111;
		4'b1001: codeout = 7'b1111011;
		default: codeout = 7'bx;
		endcase
	end
endmodule

用verilog设计一个十进制计数器,数电实验,fpga开发

用verilog设计一个十进制计数器,数电实验,fpga开发

用verilog设计一个十进制计数器,数电实验,fpga开发  

信号名

主板器件

PIN

信号名

主板器件

PIN

clr

SW0

PIN_24

codeout[3]

d

PIN_111

en

SW1

PIN_31

codeout[4]

c

PIN_104

upd

SW2

PIN_30

codeout[5]

b

PIN_100

load

SW3

PIN_33

codeout[6]

a

PIN_112

CO

IO4/LED4

PIN_58

clkin

CLK0

PIN_88

q[0]

IO0/LED0

PIN_46

data[3]

SW7

PIN_44

q[1]

IO1/LED1

PIN_50

data[2]

SW6

PIN_39

q[2]

IO2/LED2

PIN_52

data[1]

SW5

PIN_42

q[3]

IO3/LED3

PIN_54

data[0]

SW4

PIN_32

codeout[0]

g

PIN_103

codeout[1]

f

PIN_110

codeout[2]

e

PIN_106

用verilog设计一个十进制计数器,数电实验,fpga开发

PS.注意实验箱是否故障,及时更换,不要浪费时间。文章来源地址https://www.toymoban.com/news/detail-741308.html

到了这里,关于【数电实验3】Verilog—1位十进制可逆计数器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • C语言实例:输出八进制,十进制,十六进制,指定位数整数,带符号整数,科学计数法表示的整数

    直接使用printf函数输出整数即可,例如: 输出结果为: %d是printf函数的格式控制符,用于输出整数。在printf函数中,%d会被替换成一个整数变量的值。例如,printf(“%d”, num)中%d将被num的值替换,从而输出num的值作为整数。 使用printf函数的格式控制符可以输出指定位数的整数

    2024年02月08日
    浏览(17)
  • 【verilog】用七段数码管显示二进制编码的十进制数

    【verilog】用七段数码管显示二进制编码的十进制数

    用七段数码管显示0~9,输入为四个信号,这四位二进制数表示十进制的0~9 图1 逻辑电路与七段显示器 图2 真值表 根据卡诺图,得出a~g的逻辑表达式: 硬件描述语言: 图4 代码编译成功 图5 电路图 图6 仿真波形 表1 端口管脚分配表 端口 使用模块信号 对应FPGA管脚 功能说明

    2023年04月25日
    浏览(16)
  • 【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】

    【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】

    原题链接 本题我们先需要知道 十进制 如何转 二进制 二进制 如何转 十进制 十进制 如何转 二进制: 十进制转成二进制 例如 173 转成 二进制 就把173 短除法 除到0 然后 得到的余数, 从下往上写 二进制 转成 十进制 利用如图方法,把二进制 转成 十进制 本题是高精度,如何

    2023年04月26日
    浏览(15)
  • Python中二进制十进制转换

            hello大家好,今天我想和大家分享一下在Python中进制转换加减法的方法。         比如现在我们需要求100 + 10,然后需要将结果110以二进制的形式返回,又或者我们现在有一个小需求,就是要计算二进制1010和二进制1011的和是多少,然后依旧以二进制的形式返回

    2024年02月16日
    浏览(50)
  • 【Python 千题 —— 基础篇】进制转换:十进制转二进制

    题目描述 计算机底层原理中常使用二进制来表示相关机器码,学会将十进制数转换成二进制数是一个非常重要的技能。现在编写一个程序,输入一个十进制数,将其转换成二进制数。 输入描述 输入一个十进制数。 输出描述 程序将输入的十进制数转换为二进制数,并输出其

    2024年02月07日
    浏览(17)
  • 十六进制转换到十进制(java)

    一、前言  首先我们要知道十六进制的转换以及十以上的进制的转换与十以下的进制转换是不一样的,它们在一位上会用超过9的数字,这个我们在利用以前的方法就行不通了,我接下来就向大家分享一种方法。(注:在Java中10---15分别用A B C D E F表示,不分大小写) 二、正文

    2024年02月11日
    浏览(16)
  • python实现十六进制转十进制

    python实现十六进制转十进制

    先来看下十六进制的定义以及表示方式,以下是百度百科上的解释: 十六进制 (简写为 hex 或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作

    2023年04月19日
    浏览(13)
  • python十进制转二进制方法详解

    python十进制转二进制方法详解

      在 Python中,十进制数可以转换成二进制数。例如: 但是,十进制数不是直接转换成二进制,而是先转换成二进制数,再转换成十进制。接下来我们来看看具体的实现方法: 首先我们来看一个例子: 上面代码中,使用了循环遍历的方法。从这个例子中我们可以发现,需要遍

    2023年04月19日
    浏览(52)
  • MATLAB十六进制与十进制互相转换

    包含单个数字进行转换和数组进行转换(可用于串口数据解析) 1.十六进制转十进制

    2024年01月16日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包