一、实验目的
(1) 熟悉EDA软件,并能熟练使用。
(2) 分析设计任务,根据任务要求完成设计内容。
(3) 利用软件对设计内容进行仿真调试,得到正确运行结果。
设计任务给出十进制计数器的VHDL描述。要求:
(1) 利用有限状态机的方法。
(2) 具有同步使能。
(3) 设计七段译码器的VHDL代码。
(4) 利用元件例化的方式实现计数译码器的设计。
(1) 建立工作库文件夹和编辑设计文件
File->New Project Wizard


(2) 创建工程
File->New->Verilog HDL File

(3) 全程编译
(4) 时序仿真
由上图可知,当时钟使能端信号到来时,DOUT会加1;
当DOUT加到1001(数字9)时,COUT进位会加1;
符合10进制计数器规律。
当RST为1时,低四位高四位全清零。
综合分析可知,这是一个10进制计数器。
由仿真波形可知,数字0-9均可用八位二进制数表示出来,且结果是一一对应的;
当输入大于9时,输出为空,保持不变;
当时钟信号继续增加时,译码器会循环输出0-9的二进制数,可以看出来这是一个七段译码器。

由仿真波形可知,当时钟信号到来,使能端为高电平时,输出DOUT0加1,且表示为译码器形式,当加到9或者RST为低电平时,回到最初s0状态。
有限状态机10进制计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (CLK,RST,EN:IN STD_LOGIC; --
DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END CNT10;
ARCHITECTURE behav OF CNT10 IS --结构体 behav
TYPE states IS(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9); --定义状态
SIGNAL ST,NST :states :=s0; --定义敏感信号并赋初值s0
BEGIN
COM: PROCESS(ST)
VARIABLE Q:STD_LOGIC_VECTOR(3 DOWNTO 0); --定义变量
BEGIN
CASE ST IS
WHEN s0 => Q :="0000"; NST <=s1;
WHEN s1 => Q :="0001"; NST <=s2;
WHEN s2 => Q :="0010"; NST <=s3;
WHEN s3 => Q :="0011"; NST <=s4;
WHEN s4 => Q :="0100"; NST <=s5;
WHEN s5 => Q :="0101"; NST <=s6;
WHEN s6 => Q :="0110"; NST <=s7;
WHEN s7 => Q :="0111"; NST <=s8;
WHEN s8 => Q :="1000"; NST <=s9;
WHEN s9 => Q :="1001"; NST <=s0;
WHEN others=>Q :="0000"; NST <=s0; --对函数进行扩充
END CASE;
DOUT <=Q;
END PROCESS COM;
PROCESS(CLK,RST,EN)
BEGIN
IF RST='0' THEN ST<=s0; --当前状态清零
ELSIF CLK'EVENT AND CLK ='1' THEN
IF EN='1' THEN ST<=NST; --使能时钟都为1 当前值为下一状态值
END IF;
END IF;
END PROCESS;
END behav;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SEG7 IS --七段译码器
PORT (INDATA: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --输入,4位数,表示0-9
ODATA: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));--输出,八位,对应数码管上八段
END ENTITY SEG7;
ARCHITECTURE BHV OF SEG7 IS
BEGIN
PROCESS (INDATA)
BEGIN
CASE (INDATA) IS
WHEN "0000" => ODATA<= "0111111" ; --数字0的高电平点亮(公共端共阴极)二进制表示方法
WHEN "0001" => ODATA<= "0001110" ; --1
WHEN "0010" => ODATA<= "1011011" ; --2
WHEN "0011" => ODATA<= "1001111" ; --3
WHEN "0100" => ODATA<= "1100110" ; --4
WHEN "0101" => ODATA<= "1101101" ; --5
WHEN "0110" => ODATA<= "1111101" ; --6
WHEN "0111" => ODATA<= "0000111" ; --7
WHEN "1000" => ODATA<= "1111111" ; --8
WHEN "1001" => ODATA<= "1101111" ; --9
WHEN OTHERS => NULL; --其他情况,输出为空
END CASE; --结束case
END PROCESS;
END ARCHITECTURE BHV;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY CNT10_LED IS
PORT (CLK0,RST0,EN0: IN STD_LOGIC;
DOUT0:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END ENTITY CNT10_LED;
ARCHITECTURE BHV OF CNT10_LED IS
COMPONENT CNT10 --10进制计数器
PORT (CLK,RST,EN:IN STD_LOGIC; --
DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END COMPONENT CNT10;
COMPONENT SEG7 --七段译码器
PORT (INDATA: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
ODATA: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END COMPONENT SEG7;
SIGNAL IKUN:STD_LOGIC_VECTOR(3 DOWNTO 0); --IKUN😍 敏感信号
BEGIN
U1:CNT10 PORT MAP(CLK=>CLK0,RST=>RST0,EN=>EN0,DOUT=>IKUN);
U2:SEG7 PORT MAP(INDATA=>IKUN,ODATA=>DOUT0);
END ARCHITECTURE BHV ;
解决办法:按照图示依次点击Tools->Options->General->EDA Tool Options->ModelSim 把路径设置为ModelSim软件所在处。

解决办法:检查问题1是否已经解决,解决后关闭软件,以管理员身份启动软件,再次仿真。
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
尝试在我的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
我正在尝试按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']
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:
我有一个数组:array=['Footballs','Baseball','football','Soccer']而且我需要计算看到Football或Baseball的次数,无论大小写和复数形式如何。这是我尝试做的,但没有成功:array.count{|x|x.downcase.include?'football'||x.downcase.include?'baseball'}编写这段代码的正确或更好的方法是什么?我正在寻找3作为答案。 最佳答案 我会将count与一个block结合使用,该block根据与您正在寻找的约束相匹配的正