vhdl语言设计一个8路彩灯控制器?

285 2024-05-05 13:16

一、vhdl语言设计一个8路彩灯控制器?

library ieee;

use ieee.std_logic_1164.all;

entity fengxi is port(

q:in std_logic_vector(5 downto 0);

rst,adjust,clk:in std_logic;

y:out std_logic_vector(7 downto 0));

end;

architecture behavioal of fengxi is

type states is (s0,s1,s2,s3,s4,s5,s6);

signal state:states;

signal k:integer range 0 to 3;

signal en,clk_low,clk_use:std_logic;

signal y_out,y_out1:std_logic_vector(7 downto 0);

begin

process(clk,rst)--分频

begin

if rst='1' then

k<=0;clk_low<='0';

else

if(clk'event and clk='1') then

if k=3 then

k<=0; clk_low<=not clk_low;

else

k<=k+1;

end if;

end if;

end if;

end process;

process(clk,adjust)==调速

begin

if adjust='1' then

clk_use<=clk;end if;

if adjust='0' then

clk_use<=clk_low;

end if;

end process;

process(q)--手动

begin

if q="000000" then en<='1';else en<='0'; end if;

if q="000001" then y_out1<="00000001";end if;

if q="000010" then y_out1<="00000010";end if;

if q="000100" then y_out1<="00000011";end if;

if q="001000" then y_out1<="00000100";end if;

if q="010000" then y_out1<="00000101";end if;

if q="100000" then y_out1<="00000110";end if;

end process;

process(rst)--循环

begin

if (rst='1') then

state<=s0;else

if(clk_use'event and clk_use='1') then

case state is

when s0 =>

state<=s1;

when s1=>

state<=s2;

when s2=>

state<=s3;

when s3 =>

state<=s4;

when s4=>

state<=s5;

when s5=>

state<=s6;

when s6=>

state<=s1;

end case;

end if;

end if;

end process;

process(rst,q)

begin

if rst='1' then

y_out<="00000000";

else

case state is

when s0=>

y_out<="00000000";

when s1=>

y_out<="00000001";

when s2=>

y_out<="00000010";

when s3=>

y_out<="00000011";

when s4=>

y_out<="00000100";

when s5=>

y_out<="00000101";

when s6=>

y_out<="00000110";

end case;

end if;

if en='1' then

y<=y_out;end if;

if en='0' then

y<=y_out1;end if;

end process;

end;

二、基于vhdl语言的8位数字频率计的设计?

实验目的: 设计一个4位十进制频率计,学习复杂数字系统的设计方法。实验原理:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的脉冲计数允许信号,1秒计数结束后,计数值(即所测信号频率)锁入锁存器,并为下一次测频作准备,即将计数器清零。试验内容:1、根据频率计的工作原理,将电路划分成控制器、计数器、锁存器和LED显示几个模块, 控制器――产生1秒脉宽的计数允许信号、锁存信号和计数器清零信号计数器――对输入信号的脉冲数进行累计锁存器――锁存测得的频率值LED显示――将频率值显示在数码管上顶层文件框图如下: 2、用元件例化语句写出频率计的顶层文件。提示:十进制计数器输出的应是4位十进制数的BCD码,因此输出一共是4×4bit。实验结果:各模块电路的VHDL描述:10进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 is port (rst,fx,ena:in std_logic; cout: out std_logic; outy :out std_logic_vector(3 downto 0));end cnt10;architecture behv of cnt10 isbegin process (rst,ena,fx) variable cqi :std_logic_vector(3 downto 0);begin if rst='1' then cqi :=(others =>'0'); elsif fx'event and fx='1' then if ena ='1' then if cqi < 9 then cqi:=cqi+1;cout<='0'; elsif cqi=9 then cqi :=(others =>'0'); cout<='1'; end if; elsif ena='0' then cqi:=(others =>'0'); end if;end if; outy <=cqi;end process;end behv;4位10进计数器library ieee;use ieee.std_logic_1164.all;entity cnt10_4 isport(fx,rst,ena:in std_logic; d:out std_logic_vector(15 downto 0));end entity;architecture one of cnt10_4 iscomponent cnt10 port (rst,fx,ena:in std_logic; cout: out std_logic; outy :out std_logic_vector(3 downto 0));end component;signal e:std_logic_vector(3 downto 0);beginu1:cnt10 port map(fx=>fx,rst=>rst,ena=>ena,cout=>e(0),outy=>d(3 downto 0));u2:cnt10 port map(fx=>e(0),rst=>rst,ena=>ena,cout=>e(1),outy=>d(7 downto 4));u3:cnt10 port map(fx=>e(1),rst=>rst,ena=>ena,cout=>e(2),outy=>d(11 downto 8));u4:cnt10 port map(fx=>e(2),rst=>rst,ena=>ena,cout=>e(3),outy=>d(15 downto 12));end architecture one;16位锁存器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity latch4 isport(d:in std_logic_vector(15 downto 0);ena,clk:in std_logic;q:out std_logic_vector(15 downto 0));end latch4;architecture one of latch4 isbeginprocess(clk,ena,d)variable cqi:std_logic_vector(15 downto 0);beginif ena='0' then cqi:=cqi;elsif clk'event and clk='1' then cqi:=d;end if;q<=cqi;end process;end one;LED控制模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led_controller isport(d:in std_logic_vector(3 downto 0);a:out std_logic_vector(6 downto 0));end led_controller;architecture one of led_controller isbegin process(d)begincase d iswhen "0000"=> a<="0111111";when "0001"=> a<="0000110";when "0010"=> a<="1011011";when "0011"=> a<="1001111";when "0100"=> a<="1100110";when "0101"=> a<="1101101";when "0110"=> a<="1111101";when "0111"=> a<="0000111";when "1000"=> a<="1111111";when "1001"=> a<="1101111";when "1010"=> a<="1110111";when "1011"=> a<="1111100";when "1100"=> a<="0111001";when "1101"=> a<="1011110";when "1110"=> a<="1111001";when "1111"=> a<="1110001";when others=> null;end case;end process;end;控制模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity control is port (clk:in std_logic; rst,ena: out std_logic);end control;architecture behv of control isbegin process (clk) variable cqi :std_logic_vector(2 downto 0);begin if clk'event and clk='1' then if cqi <1 then cqi:=cqi+1;ena<='1';rst<='0'; elsif cqi=1 then cqi :=(others =>'0'); ena<='0';rst<='1'; end if; end if; end process;end behv;总体例化语句:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cntf isport(rset,clk:in std_logic; fx:in std_logic; ledout:out std_logic_vector(27 downto 0));end entity;architecture one of cntf iscomponent control port (clk:in std_logic; rst,ena: out std_logic);end component;component cnt10_4port(fx,rst,ena:in std_logic; d:out std_logic_vector(15 downto 0));end component;component latch4port(d:in std_logic_vector(15 downto 0);ena,clk:in std_logic;q:out std_logic_vector(15 downto 0));end component;component led_controllerport(d:in std_logic_vector(3 downto 0);a:out std_logic_vector(6 downto 0));end component;signal x,z:std_logic;signal g,h:std_logic_vector(15 downto 0);signal leds:std_logic_vector(27 downto 0);beginu1: control port map(clk=>clk,ena=>x,rst=>z);u2: cnt10_4 port map(fx=>fx,rst=>z,ena=>x,d=>g);u3: latch4 port map(clk=>clk,ena=>x,d=>g,q=>h);u4: led_controller port map(d(3 downto 0)=>h(3 downto 0),a(6 downto 0)=>leds(6 downto 0));u5: led_controller port map(d(3 downto 0)=>h(7 downto 4),a(6 downto 0)=>leds(13 downto 7));u6: led_controller port map(d(3 downto 0)=>h(11 downto 8),a(6 downto 0)=>leds(20 downto 14));u7: led_controller port map(d(3 downto 0)=>h(15 downto 12),a(6 downto 0)=>leds(27 downto 21));ledout<=leds;end; 这是我当时做的一个4位频率计,CLK为一个1HZ的时钟信号。可用数码管显示出频率数的。只要你能读懂原理,是很容易改成八位的。 如果要图文混合设计,即各模块设计好后,顶层文件用原理图设计即可。给你参考一下吧。

三、10线4线编码器和8线3线编码器有什么区别?

10线4线编码器和8线3线编码器的主要区别在于编码方式的差异。1. 10线4线编码器采用10条输入线来编码4个输出线,其中任意两个输出线不会相同,故而编码方式更为复杂,精度更高,适合于需要高精度测量和控制的场合。2. 而8线3线编码器则采用8条输入线来编码3个输出线,输出线之间可能会有部分相同的编码,编码方式相对简单,精度略低,适用于一般控制和测量场合。除了编码方式,10线4线编码器和8线3线编码器还有一些其他的区别,比如电气特性,供电电压,适用环境等等。更深入理解这两种编码器的区别可以帮助我们选择更合适的编码器满足不同的应用需求。

四、C语言输入4行8列的星号?

当使用C语言编写程序时,您可以使用嵌套的循环来输入4行8列的星号。首先,您可以使用外部循环控制行数,内部循环控制列数。在每次内部循环迭代时,打印一个星号。这样,内部循环将在每行打印8个星号,而外部循环将在总共4行中重复这个过程。通过这种方式,您可以输出一个4行8列的星号图案。

以下是一个示例程序:

```c

#include <stdio.h>

int main() {

int rows = 4;

int columns = 8;

for (int i = 0; i < rows; i++) {

for (int j = 0; j < columns; j++) {

printf("*");

}

printf("\n");

}

return 0;

}

```

运行此程序将输出以下结果:

```

********

********

********

********

```

这是一个简单的方法来输入4行8列的星号。您可以根据需要调整行数和列数的值,以输出不同大小的星号图案。

五、4到8个月宝宝语言发展特点?

  人本身对交流非常渴望,在婴幼儿身上这就能够直观地展现了。婴幼儿虽然不大会说话,但是他会尝试用各种方式来同妈妈交流。家长则可以根据幼儿各阶段的语言发育特点,来帮助他们进行语言开发。

  一、0-2个月

  发展特点

  1、易敏感。在意身边的各种声音,会长时间注视着说话的人。

  2、爱交流。出生半个月左右,就向往和妈妈对话,开始会发出哼哼声,还会使用不同的哭声来告诉妈妈不同的需求。

  3、辨别与回应。到了2月大的时候,基本上可以分辨出妈妈的声音,并发出声音进行回应。

  培养方法

  1、多交流。和宝宝说话时表情可以略带夸张,鼓励他发声。

  2、多体会。宝宝的语言或许很难懂,但母子连心,静下心来慢慢体会,记住任何一种声音都要给予回应。

  3、目光交流。在这一时期语言交流还比较困难,坚持目光交流,经常面对宝宝,让他感受到你对他的爱。

  二、2-6个月

  发展特点

  1、元音和辅音。你会发现宝宝在会笑之后,会不时发出a、o、e的声音。不开心时,会发现出n、m、p的声音,开心时还会夹杂着k的声音,还会依依呀呀地和妈妈“谈心”了。

  2、愈发敏感。有人喊他的名字时,会立即转过头来找。看到熟悉的家人,书籍,玩具会发出欢快的声音。

  3、多元化的声音。四个月大时,孩子会开心地尖叫甚至发出吐泡泡的声音。六个月大时,会朦朦胧胧地发出ma,da的声音。

  培养方法

  1、锻炼舌头。可引导幼儿经常吮吸或舔乳头。

  2、听音乐。播放很有节奏的儿童音乐,也可经常朗诵儿歌。

  3、笑脸迎宝。经常在宝宝面前笑,通过滑稽的表演让他试着模仿。

  三、7-12个月

  发展特点

  1、发音清晰。可以很清晰地发出ba,ma,da的声音,8个月时就可以蹦出连着的baba和mama了。

  2、爱模仿。10个月时,开始模仿旁人的说话声音而且越来越像。到了1岁左右,还会模仿小动物的叫声。

  3、会理解。理解能力越来越强,赞同会点头,反对会摇头,并理解大人的指示,如挥手拜拜,拍手等。

  培养方法

  1、做个优秀的老师。宝宝会模仿你的声音来学说话,因此同他说话时要放慢速度,一个字一个字地说出来,最好结合些动作来表达。

  2、一同依依呀呀。使用宝宝的语言,他会看到你开心的样子更加努力地说。

  3、跟着他说。这个阶段的宝

六、4-8个月幼儿语言发展特点?

  1、发音清晰。可以很清晰地发出ba,ma,da的声音,8个月时就可以蹦出连着的baba和mama了。

  2、爱模仿。10个月时,开始模仿旁人的说话声音而且越来越像。到了1岁左右,还会模仿小动物的叫声。

  3、会理解。理解能力越来越强,赞同会点头,反对会摇头,并理解大人的指示,如挥手拜拜,拍手等。

  培养方法

  1、做个优秀的老师。宝宝会模仿你的声音来学说话,因此同他说话时要放慢速度,一个字一个字地说出来,最好结合些动作来表达。

  2、一同依依呀呀。使用宝宝的语言,他会看到你开心的样子更加努力地说。

  3、跟着他说。这个阶段的宝宝会蹦字,不妨随着他一起说,并给他以拥抱鼓励,让他不停地练习说话。

  4、理解。即使宝宝会说某个字或词也未必能理解其中的含义,家长要通过动作或者实物让他明白。

七、如何用vhdl语言编写一个8位七段数码管,实现动态扫描,比如让8位数码管在同一时刻分别显示876543210?

PROCESS (HighCLK) --动态数码管控制显示部分BEGIN IF HighCLK 'EVENT AND HighCLK ='1' THEN CASE Q IS WHEN 0 => Y Y Y Y Y Y Y Y Q Y

八、分别用元件例化和生成语句来设计4位移位寄存器?(VHDL语言编程)?

这个不难 你可以首先 定义一个寄存器 data(31 downto 0)输入 datain

然后在每一个clk 数据datain 送入data中 然后并右移一位 最好在设置一个标志位 为你检查是否 这样送32个脉冲 然后一次 dataout《=data这样便可以并行输出 dataout 也是32位的

九、用C语言编写函数求2!+4!+6!+8!+10?

int i,s=0,p;

for(i=2;i<10;i+=2)

{ p=1; 此处要注意,每进行一次阶层运算,就要从1开始累乘。

for(j=1;j<=i;j++)

p=p*j;

s+=p;

}

此题是累加累乘类题目,主要关注的是循环的变量关系。

还有最基本的算法。

很高兴为你解答。

十、c语言编程实现求数列1/2、3/4、5/8、7/16、9/32……的所有大于0.000001的数?

#include<stdio.h>int main(){ int i=1,j=2; double r; while(1) { r = (double)i/j; if(r < 0.000001) break; printf("%lf", r); i+=2; j*=2; } return 0;}

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片