基于fpga的vhdl编写的电子时钟内容摘要:
end if。 end if。 disp=’1’。 elsif stop=’1’ and ok=’1’then down counting if a_sec=0 then if a_min=0 then if a_hour=0 then index=’1’。 disp=’0’。 else a_hour=a_hour 1。 a_min=59。 a_sec=59。 end if。 else a_min=a_min 1。 a_sec=59。 end if。 else a_sec=a_sec 1。 index=’0’。 disp=’1’。 end if。 else disp=’0’。 end if。 end if。 end process。 stop_sec=a_sec。 stop_min=a_min。 stop_hour=a_hour。 end arch。 在1Hz的触发信号下,若拨动开关stop=’1’,且按住调秒键sec_tune不放,则计时器定时一直到切换拨动开关ok=’1’时,定时10秒钟,接着自动计时到0,再送出index=’1’的指针信号。 信号仿真结果如图46所示。 图4-6 i60bcd组件 为了计算方便,前面都以整数形式来处理时间,但在一般电路中,数值均以二进制的形式存储,所以需要设计一个查表程序来将秒数或分数的0~59共60个整数转换成二进制编码的十进制(BCD)表示法,以便将来转换成七段显示器格式输出。 i60bcd组件程序代码 the ieee standard 1164 package, declares std_logic, rising_edge(), etc. library ieee。 use。 use。 use。 entity i60bcd is port (interg : in integer range 0 to 59。 interger number ten : out std_logic_vector (3 downto 0)。 decimal bit one : out std_logic_vector (3 downto 0) )。 ndividual bit end i60bcd。 architecture arch of i60bcd is begin process(interg) begin case interg is when 0|10|20|30|40|50 = one=0000。 when 1|11|21|31|41|51 = one=0001。 when 2|12|22|32|42|52 = one=0010。 when 3|13|23|33|43|53 = one=0011。 when 4|14|24|34|44|54 = one=0100。 when 5|15|25|35|45|55 = one=0101。 when 6|16|26|36|46|56 = one=0110。 when 7|17|27|37|47|57 = one=0111。 when 8|18|28|38|48|58 = one=1000。 when 9|19|29|39|49|59 = one=1001。 when others = one=1110。 end case。 case interg is when 0|1|2|3|4|5|6|7|8|9 = ten=0000。 when 10|11|12|13|14|15|16|17|18|19 = ten=0001。 when 20|21|22|23|24|25|26|27|28|29 = ten=0010。 when 30|31|32|33|34|35|36|37|38|39 = ten=0011。 when 40|41|42|43|44|45|46|47|48|49 = ten=0100。 when 50|51|52|53|54|55|56|57|58|59 = ten=0101。 when others = ten=1110。 end case。 end process。 end arch。 信号仿真结果如图47所示。 由图47可知,当输入整数在0~59的范围时,个位数与十位数的值均正确;而超出范围时,个位数与十位数的值则显示“E”以警告错误。 图4-7 i24bcd组件 同理,设计一个查表程序来将小时数0~23共24个整数转换成二进制编码的十进制(BCD)表示,以便将来转换成七段显示器格式输出。 组件的程序代码。 i24bcd组件程序代码 the ieee standard 1164 package, declares std_logic, rising_edge(), etc. library ieee。 use。 use。 use。 entity i24bcd is port (interg : in integer range 0 to 23。 interger number ten : out std_logic_vector (3 downto 0)。 decimal bit one : out std_logic_vector (3 downto 0) )。 individual bit end i24bcd。 architecture arch of i24bcd is begin process(interg) begin case interg is when 0|10|20 = one=0000。 when 1|11|21 = one=0001。 when 2|12|22 = one=0010。 when 3|13|23 = one=0011。 when 4|14 = one=0100。 when 5|15 = one=0101。 when 6|16 = one=0110。 when 7|17 = one=0111。 when 8|18 = one=1000。 when 9|19 = one=1001。 when others = one=1110。 end case。 case interg is when 0|1|2|3|4|5|6|7|8|9 = ten=0000。 when 10|11|12|13|14|15|16|17|18|19 = ten=0001。 when 20|21|22|23 = ten=0010。 when others = ten=1110。 end case。 end process。 end arch。 信号仿真结果如图48所示。 由图48可知,当输入整数在0~23的范围时,个位数与十位数的值均正确;而超出范围时,个位数与十位数的值则显示“E”以警告错误。 图4-8 bin2led组件 在一般电路中,数值均以二进制的形式存储与计算,但是要将其输出至七段显示器显示时,则必须提供一个电路模块专门将二进制转换成十进制供输出使用。 此处我们以查表方式来设计转换电路,使用并行语句with_select列出0~9等10种对照数值状况。 若为10及其以上的数字,则显示错误信息“E”。 组件的程序代码。 bin2led 组件程序代码library ieee。 use。 use。 use。 entity bin2led is port (bin : in std_logic_vector (3 downto 0)。 internal binary number led : out std_logic_vector (6 downto 0) )。 7_segments led display end bin2led。 architecture arch of bin2led is begin segment encoding 0 5 | | 1 6 4 | | 2 3 anode_mon 7_segment led with bin select led=1111001 when 0001,1 0100100 when 0010,2 0110000 when 0011,3 0011001 when 0100,4 0010010 when 0101,5 0000010 when 0110,6 1111000 when 0111,7 0000000 when 1000,8 0010000 when 1001,9 1000000 when 0000,0 0000110 when others。 e for error display end arch。 信号仿真结果如图49所示。 七段显示器可显示0~9共10个数字,其他数字则显示“E”,表示输出错误。 图4-9 七段显示器扫描输出电路模块(display) 为了节省6个七段显示器显示所需的电流消耗,我们将利用视觉暂留原理来让七段显示器轮流显示。 市面上卖的4个串联在一起的四合一七段显示器组,有7个端口a,b,c,d,e,f,g,另外4个电源引脚分别决定哪一个七段显示器亮,另一只引脚接Vcc。 因此将分与秒4个数字共享一组七段显示器组,其中必须使用同步扫描电路,将各个数字的7个信号分别接至 a,b,c,d,e,f,g端口,同时触发该数字所对应的七段显示器的电源引脚。 视觉暂留原理要求每一数字在1s内必须亮32次。 换句话说,在(1/32)s内,4个数字要轮流亮一次,故每一个数字最多可连续亮(1/128)s,然后等待(3/128)s后再亮一次,因此节省了3/4的电能消耗。 视觉暂留效应让我们感觉到,相隔(1/32)s亮一次的灯似乎一直都亮着。 同理,显示小时的2个数字,仍然使用四合一七段显示器组。 只是放弃其中的2个七段显示器不用即可。 列出scan4组件的程序代码。 scan4组件程序代码 the ieee standard 1164 package, declares std_logic, rising_edge(), etc. library ieee。 use。 use。 use。 entity scan4 is port (rst,clk : in std_logic。 a,b,c,d: in st。基于fpga的vhdl编写的电子时钟
相关推荐
且读写速率也达不到工作时钟的频率。 sdram控制器的作用就是将 sdram存储器的初始化、刷新、地址转换、数据读取等操作封装起来,让使用者将其看成系统黑盒,读数直接按地址访问,写数直接往目的地址赋值即可。 Xilinx提供了 sdr sdram控制器的 IP Core,在 XPS中,直接将其添加到 OPB 总线上即可。 sdr sdram控制器的内部结构以及与 OPB 总线的接口如图 912
020 感动中国十大人物杨善洲同志从事革命工作近 40 年,曾担任保山地委领导,两袖清风,清廉履职,只为了兑现自己当初 “ 为当地群众做一点实事不要任何报酬 ” 的承诺。 廉洁自律,勤政为民是对党员干部的起码要求。 我们要严格要求自己,依法办事,严格执法,不以权代法,做学法、守法、用法 的模范。 要打牢廉洁从政依法理财的思想基础,时刻做到自重、自省、自警、自励。 以上是我此次学习的个人体会
begin D=1。 //guan jian EN=1。 end else begin D=0。 EN=1。 end end end endmodule D Z Z _Tins tKEY [1. .0]R ESE TC LK4HH OU R [4. .0]M IN [5. .0]SEC [5. .0]TS[ 1. .0]DEN 三、计时调整时间模块代码: ( 1)小时计时和小时计时的调整:
EPROM、 PROM编程器即可。 由于配置时间很短,因而不会影响系统正常工作。 当然也有少数 FPGA 采用反熔丝或 FLASH 工艺,对这种 FPGA 就不需要外加专用的配置芯片了。 这样,同一片 PFGA,不同的编程数据可以产生不同的电路功能。 因此, FPGA 的使用非常灵活 [8]。 随着的不断发展以及用户需求的不断提出, FPGA 的技术也在不断地发展。
过一根下载线(如 ByteBlasterII) 来下载程序 ,这种模式特别方便、简单。 但它的缺点就是不能掉电保存程序。 因此限制了其商业化的目的。 主动和被动模式都使用外部存储器来存放配置数据,达到掉电保存配置数据的目的。 在专用的配置芯片较贵时,普遍采用被动方式来配置,即采用微处理器和一片大容量的 ROM 来代替专用芯片,但是必须自己编写程序来模仿下载时序对芯片进行配置,比较烦琐。
e II、 Stratix II 系列、 Stratix GX 系列等。 支持 IP 核,包含了 LPM/Mega Function 宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。 此外, Quartus II 通过和 DSP Builder 工具与Matlab/Simulink 相结合,可以方便地实现各种 DSP 应用系统;支持 Altera 的片上可编程系统(