buffer inout vhdl-vhdl中buffer与inout的区别

问题描述

vhdl中buffer与inout的区别

library ieee;
use ieee.numeric_bit.all;

entity clock is
port (clk, inch, incm, incha, incma, set_alarm, alarm_off:in bit;
hours, ahours, minutes, aminutes, seconds: inout unsigned(7 downto 0);
am_pm, aam_pm, ring: inout bit;
alarm_set: inout bit);
end clock;

architecture clock1 of clock is
component CTR_59 is
port(clk, inc, reset:in bit;dout: out unsigned(7 downto 0);
t59: out bit);
end component;

component CTR_12 IS
port(clk, inc: in bit; dout: out unsigned(7 downto 0);am_pm: inout bit);
end component;

signal s59 , m59 , inchr , incmin ,c99 :bit;
signal alarm_ring_time :integer range 0 to 50;
signal div100:integer range 0 to 99; a

begin
sec1:ctr_59 port map(clk,c99,'0',seconds,s59);
min1:ctr_59 port map(clk,incmin,'0',minutes,m59);
hrs1:ctr_12 port map(clk,inchr,hours,am_pm);
incmin<=(s59 and c99)or incm;
inchr<=(m59 and s59 and c99)or inch;
alarm_min:ctr_59 port map(clk,incma,'0',aminutes,open);
alarm_hr:ctr_12 port map(clk,incha,ahours,aam_pm);
c99<='1' when div100 =99 else '0';
process(clk)
begin
if clk'event and clk='1' then
if c99='1' then div100<= 0;
else div100<=div100+1;
end if;
if set_alarm='1' then
alarm_set <=not alarm_set;
end if;
if ((minutes=aminutes)and(hours=ahours)and(am_pm=aam_pm))and seconds=0 and alarm_set='1' then
ring<='1';
end if;
if ring='1' and c99='1' then
alarm_ring_time<=alarm_ring_time+1;
end if;
if alarm_ring_time=50 or alarm_off='1' then
ring<='0';alarm_ring_time<=0;
end if;
end if;
end process;
end clock1;

这段程序出自数字系统设计与VHDL(第二版)385-386页,书上使用的是inout,但是我换成buffer仿真结果也没有区别,请问大家这里有必须要用inout的理由嘛?

时间: 2024-10-02 03:35:46

buffer inout vhdl-vhdl中buffer与inout的区别的相关文章

c++-C++中get与getline的区别?

问题描述 C++中get与getline的区别? 两者cin.get和cin.getlie有什么区别,什么时候用哪一个比较好 解决方案 分为三种情况来看: 1)输入的字符串不超过限定大小 get(str,Size):读取所有字符,遇到'n'时止,并且将'n'留在输入缓冲区中,其将被下一个读取输入的操作捕获,影响该输入处理: getline(str,Size):读取所有字符,遇到'n'时止,并且将'n'直接从输入缓冲区中删除掉,不会影响下面的输入处理. 2)输入的字符数超出限定的大小 get(st

PHP中fwrite与file_put_contents的区别

相同点:file_put_contents() 函数把一个字符串写入文件中,与依次调用 fopen(),fwrite() 以及 fclose() 功能一样. 不同点:在file_put_contents()函数中使用 FILE_APPEND 可避免删除文件中已有的内容,即实现多次写入同一个文件时的追加功能. 例如: echo file_put_contents("test.txt","Hello World. Testing!",FILE_APPEND); file

浅析C++中memset,memcpy,strcpy的区别_C 语言

复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h> //memcpy:按字节复制原型:extern void* memcpy(void *dest,void *src,unsigned int count)//功能:由src所指内存区域复制count个字节到dest所指的内存区域://同strcpyvoid *memcpy_su(void

Linux中线程和进程的区别

Linux中线程和进程的区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位.例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格.内存空间.磁盘空间.I/O设备等,然后该进程被放入到进程的就绪队列,进程调度程序选中它,为它分配CPU及其他相关资源,该进程就被运行起来. 线程是进程的一个实体,是CPU调度和分配的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器.一组寄存器和栈),但

【linux】free命令中cached和buffers的区别

一.命令 1 2 3 4 5 [root@localhost ~]# free -m              total       used       free     shared    buffers     cached Mem:          7869       7651        218          1        191       5081 -/+ buffers/cache:       2378       5490 Swap:          478

Android编程中FileOutputStream与openFileOutput()的区别分析

本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. public void save() { try { FileOutputStream outStream=this.openFileO

web context j2ee-j2ee中的各种context的区别?

问题描述 j2ee中的各种context的区别? 比如applicationcontext,sessioncontext,servletcontext,requestcontext,responsecontext,pagecontext这几个context.上面可能没有列举完,希望大神可以详细地解答一下~ 解决方案 同样小白,我自己的理解就是他们的作用域范围不太一样吧.

安卓线程中 stopSelf();和ondestroy()的区别

问题描述 安卓线程中 stopSelf();和ondestroy()的区别 在runnable分别加入ondestroy()和stopself(); 在断点中下面的代码都执行了, 但是再一次startservice(线程)的时候前者提示Thread is started异常, 后者则正常 @Override public void onDestroy(){ super.onDestroy(); ListData.interrupt(); } 解决方案 interrupt()并不会真正结束掉线程.

mfc-关于MFC中nEscapement和nOrientation的区别和用法

问题描述 关于MFC中nEscapement和nOrientation的区别和用法 我使用的是cEscapement的方式调整字体角度,结果是以每行的首字为原点的角度变化,即如果换行了,文字变换角度是对的但上下两行仍然是对齐的. 有没有什么办法使得角度变换后能够将整个字体作为整体一起改变. (_T("字体角度") == strName) { lf.lfEscapement = _ttol(strVal) *10; pText->m_pFont = pText->m_pLay