草庐IT

1位十进制可逆计数、译码、显示电路设计

weixin_49270464 2025-04-16 原文

计数器同样由三个模块构成,分别为:顶层,计数器和译码器。

一、实验任务

大家这会儿数电理论课应该还没学到这里,所以对以上的部分名词进行解释:

1.异步清零(clr)

指不管现在时钟信号(clk)是什么,跑到哪儿了,只要你按下异步清零的按钮,计数器就应该马上归零。

2.同步使能(en)

其实就是一个计数器是否开始工作的开关,关闭了使能开关,计数器将会停在当前的计数值,不再随时间信号进行计数。

3.同步置数(load)

一个非常面向使用对象的功能。让使用者输入一个数值(预置数),再从这个数值进行加/减计数,因为是随着下一个时钟信号的到来才开始计数的,所以叫同步置数。

二、实验分析

输入信号:

clkin(时钟),clr(异步清零),upd(加减计数),en(使能开关),[3:0]data(预置数),load(同步置数)

输出信号:

seg0(位选),[3:0]Q(波形),[6:0]codeout (译码器),CO(进位信号)

三、代码

顶层文件:

module w_2495_03(codeout,  Q, clkin, clr, CO, upd, en, load, seg0, data);
input  clkin, clr, upd, en, load;
input  [3:0] data;
output[6:0] codeout;
output [3:0] Q;
output CO,seg0;

w_2495_03_2(clkin, clr, Q, CO, upd, en, load, data );
w_2495_03_1 (codeout,Q,seg0);

endmodule

译码器:

module w_2495_03_1 (codeout, Indec,seg0);  //译码器
input[3:0] Indec;
output[6:0] codeout;
reg [6:0]codeout;
output seg0;
assign seg0 = 1;
always@(Indec)
begin
    case(Indec)
	 4'd0 : codeout=7'b111_1110; 
    4'd1 : codeout=7'b011_0000;
    4'd2 : codeout=7'b110_1101;
    4'd3 : codeout=7'b111_1001;
    4'd4 : codeout=7'b011_0011;
    4'd5 : codeout=7'b101_1011;
    4'd6 : codeout=7'b101_1111;
	 4'd7 : codeout=7'b111_0000;
    4'd8 : codeout=7'b111_1111;
    4'd9 : codeout=7'b111_1011;
	 default: codeout=7'bx;
	 endcase
	end
endmodule

计数器

module w_2495_03_2(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, posedge clr)

if(clr)          //异步清零(为1时)
    Q<=4'd0;
else if(!load)    //同步置数,若为低电平则直接赋值
     Q<=data;
else if(en)      //en高电平,同步使能
begin
	if(upd & load)        //同步置数,加法计数,upd 1
	  begin
		 if(Q==4'd9)
			Q<=4'd0;
		else
			Q<=4'd1+Q;
	end
	
  else if(load)           //同步置数,减法计数 upd0
	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

注意:因为我当时写的时候啥也不知道,但一般来说,时钟信号采用上升沿触发(posedge),而复位信号一般采用下降沿触发(negedge),所以开头可以改成:

always@(posedge clkin, negedge clr)

if(!clr)          //异步清零
    Q<=4'd0;

四、仿真波形

1.加计数

 

 2.减计数

五、引脚分配表

二、引脚分配表(电路中的信号名称->主板器件名称->引脚号PIN)

信号名

主板器件

PIN

信号名

主板器件

PIN

CO

IO4

PIN_58

codeout[1]

f

PIN_110

Q[3]

IO3

PIN_54

codeout[0]

g

PIN_103

Q[2]

IO2

PIN_52

en

SW1

PIN_31

Q[1]

IO1

PIN_50

load

SW3

PIN_33

Q[0]

IO0

PIN_46

seg0

SEG0

PIN_119

clkin

CLK0

PIN_88

upd

SW2

PIN_30

clr

SW0

PIN_24

data[3]

SW7

PIN_44

codeout[6]

a

PIN_112

data[2]

SW6

PIN_39

codeout[5]

b

PIN_100

data[1]

SW5

PIN_42

codeout[4]

c

PIN_104

data[0]

SW4

PIN_32

codeout[3]

d

PIN_111

codeout[2]

e

PIN_106

 

有关1位十进制可逆计数、译码、显示电路设计的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  5. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  6. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  7. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  8. ruby-on-rails - Ruby on Rails 计数器缓存错误 - 2

    尝试在我的RoR应用程序中实现计数器缓存列时出现错误Unknownkey(s):counter_cache。我在这个问题中实现了模型关联:Modelassociationquestion这是我的迁移:classAddVideoVotesCountToVideos0Video.reset_column_informationVideo.find(:all).eachdo|p|p.update_attributes:videos_votes_count,p.video_votes.lengthendenddefself.downremove_column:videos,:video_vot

  9. ruby - 使用多个数组创建计数 - 2

    我正在尝试按0-9和a-z的顺序创建数字和字母列表。我有一组值value_array=['0','1','2','3','4','5','6','7','8','9','a','b','光盘','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','','u','v','w','x','y','z']和一个组合列表的数组,按顺序,这些数字可以产生x个字符,比方说三个list_array=[]和一个当前字母和数字组合的数组(在将它插入列表数组之前我会把它变成一个字符串,]current_combo['0','0','0']

  10. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

随机推荐