在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码。
格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0)。
简单的例子 十进制 二进制 格雷码
0 0000 0000
1 0001 0001
2 0010 0011
3 0011 0010
4 0100 0110
5 0101 0111
扩展资料:
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码在数字系统中,常要求代码按一定顺序变化。
例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。格雷码有多种编码形式。
参考资料来源:百度百科-格雷码
图11
程序如下:
library IEEE;
use IEEESTD_LOGIC_1164ALL;
use IEEESTD_LOGIC_ARITHALL;
use IEEESTD_LOGIC_UNSIGNEDALL;
entity xuan21 is
Port ( alarm,a,b: in std_logic;
y:out std_logic);
end xuan21 ;
architecture one of xuan21 is
begin
process(alarm,a,b)
begin
if alarm='0' then y<=a;else y<=b;
end if;
end process;
end one;
仿真波形如下图12:
图12
(2)三位二选一:
模块图如图13。用以进行正常计时时间与闹铃时间显示的选择,alarm输入为按键。当alarm按键未曾按下时二选一选择器会选择输出显示正常的计时结果,否则当alarm按键按下时选择器将选择输出显示闹铃时间显示。
图13
程序如下:
library IEEE;
use IEEESTD_LOGIC_1164ALL;
use IEEESTD_LOGIC_ARITHALL;
use IEEESTD_LOGIC_UNSIGNEDALL;
entity x213 is
Port ( alarm : in std_logic;
y:out std_logic_vector(3 downto 0);
a,b: in std_logic_vector(3 downto 0));
end x213;
architecture one of x213 is
begin
process(alarm,a,b)
begin
if alarm='0' then y<=a;else y<=b;
end if;
end process;
end one;
仿真结果如下图14:
图14
8、整点报时及闹时:
模块图如图15。在59分51秒、53秒、55秒、57秒给扬声器赋以低音512Hz信号,在59分59秒给扬声器赋以高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。当系统时间与闹铃时间相同时给扬声器赋以高音1024Hz信号。闹时时间为一分钟。
图15
程序如下:
library IEEE;
use IEEESTD_LOGIC_1164ALL;
use IEEESTD_LOGIC_ARITHALL;
use IEEESTD_LOGIC_UNSIGNEDALL;
entity voice is
Port ( hou1,huo0,min1,min0,sec1,sec0,hh,hl,mh,ml: std_logic_vector(3 downto 0);
in_1000,in_500:in std_logic;
q : out std_logic);
end voice;
architecture one of voice is
begin
process(min1,min0,sec1,sec0)
begin
if min1="0101" and min0="1001" and sec1="0101" then
if sec0="0001" or sec0="0011" or sec0="0101" or sec0="0111"
then q<=in_500;
elsif sec1="0101" and sec0="1001" then q<=in_1000;
else q<='0';
end if;
else q<='0';
end if;
if min1=mh and min0=ml and hou1=hh and huo0=hl then
q<=in_1000;
end if;
end process;
end one;
仿真波形如下图16
图16
9、顶层原理图:
三、感想
通过这次设计,既复习了以前所学的知识,也进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在画顶层原理图时,遇到了不少问题,最大的问题就是根本没有把各个模块的VHD文件以及生成的器件都全部放在顶层文件的文件夹内,还有就是程序设计的时候考虑的不够全面,没有联系着各个模式以及实验板的情况来编写程序,以至于多考虑编写了译码电路而浪费了很多时间。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示
:在分频模块中,设定输入的时钟信号后,却只有二分频的结果,其余三个分频始终没反应。后来,在数十次的调试之后,才发现是因为规定的信号量范围太大且信号的初始值随机,从而不能得到所要的结果。还有的仿真图根本就不出波形,怎么调节都不管用,后来才知道原来是路径不正确,路径中不可以有汉字。真是细节决定成败啊!总的来说,这次设计的数字钟还是比较成功的,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
四、
参考资料:
1、潘松,王国栋,VHDL实用教程〔M〕成都:电子科技大学出版社,2000(1)
2、崔建明主编,电工电子EDA仿真技术北京:高等教育出版社,2004
3、李衍编著,EDA技术入门与提高王行西安:西安电子科技大学出版社,2005
4、侯继红,李向东主编,EDA实用技术教程北京:中国电力出版社,2004
5、沈明山编著,EDA技术及可编程器件应用实训北京:科学出版社,2004
6、侯伯亨等,VHDL硬件描述语言与数字逻辑电路设计西安: 西安电子科技大学出版社,1997
7、辛春艳编著,VHDL硬件描述语言北京:国防工业出版社,2002 就这些
等着我给你写
int N = 0 ;
cin >> N ;
int Book_count = new int [N] ;
for(int i = 0 ; i < N ; ++ i)
{
Book_count[i] = new int [10] ;
}
float Book_cost = new float [N] ;
cout << "请输入测试数据: "<<endl ;
for(int k = 0 ; k < N ; ++ k)
{
for(int j = 0 ; j < 10 ; ++ j)
{
cin >> Book_count[k][j] ;
}
cout << "测试数据"<< k + 1<<"输入完毕!"<< endl ;
}
cout << endl ;
for(int j = 0 ; j < N ; ++ j)
{
Book_cost[j] = Book_count[j][0] 289 +Book_count[j][1] 327 +Book_count[j][2] 456 +
Book_count[j][3] 78 +Book_count[j][4] 35 +Book_count[j][5] 862 +
Book_count[j][6] 278 +Book_count[j][7] 43 +Book_count[j][8] 56 +
Book_count[j][9] 65 ;
//cout << Book_cost[j] << endl ;
printf("测试数据%d的结果为:%2f\n" , j+1 , Book_cost[j]);
}
for(int n = 0 ; n < N ; ++ n)
{
delete [] Book_count[n] ;
}
delete [] Book_count ;
delete [] Book_cost ;
哥们多给点分啊,敲这么多东西很累的
一个时钟信号源(可以用有源晶振)、一片二进制计数器(可以用CD4521)、一片与非门(可以用CD4068),用计数器对时钟信号进行计数,根据时钟频率计算一下多少个脉冲分别相当于60秒、45秒、5秒,把计数器的相应输出锻送到与非门的输入,由与非门的输提供倒计时信号。CD4068是双-8输入与非门,可以分别提供两路精确的倒计时信号,5秒的倒计时信号用一片输入变量较少的与非门(例如CD4012)就可以了。
以上就是关于一道数字逻辑电路的问题,求把三位二进制码转换为格雷码的电路图,用与非门设计,谢谢了全部的内容,包括:一道数字逻辑电路的问题,求把三位二进制码转换为格雷码的电路图,用与非门设计,谢谢了、VHDL数字时钟完整程序代码(要求要有元件例化,并且有按键消抖),谢谢啦啦啦啦、C++计算书费问题 求各位大大帮忙啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)