barriers / 阅读 / 详情

用vhdl 语言设计 序列信号发生器

2023-09-13 21:24:23
TAG: vhdl 设计
共1条回复
cloud123

10110101序列信号发生器.vhd library IEEE; use IEEE.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count8 is port ( r: in std_logic; clk: in STD_LOGIC; cout: out std_logic ); end count8; architecture count8_arch of count8 is signal dd: std_logic_vector ( 2 downto 0 ); begin count: process ( r,clk ) begin if ( r="1" ) then dd<="000"; elsif( clk"event and clk = "1") then dd <= dd + "1"; end if ; end process count ; with dd select cout<="1"when"000", "0"when"001", "1"when"010", "1"when"011", "0"when"100", "1"when"101", "0"when"110", "1"when"111", "0"when others ;

相关推荐

VHDL语言是什么性质的语言?

电子电路学到什么程度呢?VHDL的设计基础是数字电路,编程语言基础是C语言(或者其他高级语言),如果没有学习过编程语言就直接学VHDL的话较难上手,而且进步缓慢,要想用VHDL设计电路的话一定要对数字电路十分熟悉才能了解到VHDL设计的优势,建议楼主循序渐进较好
2023-09-04 00:15:233

请问:VHDL中二分频是怎么实现的

signal clk1 :std_logic;signal count1 :integer range 0 to 1;clk_div_proc:process(clk) begin if rising_edge(clk) then if count1=1 then count1<=0; clk1<="1"; else count1<=count1+1; clk1<="0"; end if; end if; end process clk_div_proc;
2023-09-04 00:15:543

关于VHDL语言中语句等效的问题!!

1.简单并行赋值语句:等效于于一条缩写的进程语句,因为语句中任何信号的变化都将启动相关并行语句的赋值操作。注意,赋值目标的数据对象必须是信号它的数据类型必须与赋值符号右边表达式的数据类型一致;2.条件信号赋值语句:等效于与进程中的IF 语句,在执行条件信号语句时每一赋值条件是按书写的先后关系逐项测定的一旦发现赋值条件= TRUE,立即将表达式的值赋给赋值目标变量;3.选择信号赋值语句:选择信号赋值语句本身不能在进程中应用,但其功能却与进程中的CASE 语句的功能相似; 后两者最大的区别是: 条件信号赋值语句=> 允许有条件重叠的现象; 选择信号赋值语句=> 不允许有条件重叠的现象;希望对你有所帮助。
2023-09-04 00:16:141

VHDL语言中,and和+有什么区别?xor代表加和吗?

and和+不一样的呀,就算可以用文字表示也应该是ADD吧- -。。XOR是异或的意思 1 xor 0=1 0 xor 1 = 1 1 xor 1=0 0 xor 0=0and 是与运算 只有 1 and 1=1 其他的都是0 就可以理解为相乘+的话 就不止限于0和1了 8+7也可以
2023-09-04 00:16:251

简述VHDL语言中变量和信号的不同之处。

【答案】:(1)使用场合不同:变量是局部量,只能用于进程、函数和过程语句中;信号是全局量,通常在实体、包和结构体中说明,并能在任何子结构体中使用,要在进程间或与子程序间交换信息时,必须使用信号。(2)赋值符号不同:变量使用赋值符号“:=”给变量赋值;信号使用代入符号“<=”给信号赋值。(3)赋值时间不同:变量的值在程序运行过程中可以改变,赋值后变量的值立即改变;信号的值在程序运行过程中即使执行到代入语句时,也不立即改变,而是在整个进程结束后才对信号赋值。
2023-09-04 00:16:331

1987标准中对vhdl语言的标识符有哪些基本要求

包含52个拉丁字母(大写字母A~Z、小写字母a~z)、10个阿拉伯数字(0~9)、1个符号(下划线_);首个符号必须是拉丁字母,下划线的前后必须有拉丁字母或者阿拉伯数字;不区分大小写拉丁字母。
2023-09-04 00:16:441

学习CPLD用vhdl和verilog哪种语言好

建议初学者学习Verilog,语法跟C语言很像,规则较为灵活,在国内用Verilog的较多一些。当然在选择学习什么语言的时候,建议你看看周围同学或同事都用什么语言,建议跟他们一致,这样有问题可以相互探讨,相互交流。也比较好合作。这点尤为重要,闭门造车学是很困难的。对于2种语言哪种较好,没有定论,其实都差不多的。
2023-09-04 00:17:174

用VHDL语言编程~急~

楼主我也想要啊!考试题啊!如果有的话可以给我吗?谢谢啦!邮箱272207312@qq.com
2023-09-04 00:17:254

VHDL语言是一种结构化设计语言,一个设计(电路模块)包括实体与结构体两部分,实体描述(),结构体描述()

器件的内部功能
2023-09-04 00:17:345

VHDL语言中 BEGIN、END、IF、ELSE、ELSIF是怎么用的啊? 高手详解(通俗易懂)。谢谢!!!

begin时开始的意是,用在结构体中,进程下面也要有begin,end是结束的意思,实体,结构体及其他的语句都需要在尾端用END来结束,if,else,elsif都是顺序描述语句if语句里面单分支if语句 if 条件 then 顺序语句; end if;二分支if语句 if 条件 then 顺序语句; else 顺序语句; end if;多分支if语句 if 条件1 then 顺序语句; elsif 条件2 then 顺序语句; ...... else 顺序语句; end if;
2023-09-04 00:17:511

用VHDL语言编写可逆向计数的计数器,要求如下:

已经仿真过,请放心使用!library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity Ctl_CNT is port ( clk: in STD_LOGIC; back: in STD_LOGIC; clr: in STD_LOGIC; rst: in STD_LOGIC; dis_h: out STD_LOGIC_VECTOR (6 downto 0); dis_l: out STD_LOGIC_VECTOR (6 downto 0) ); end Ctl_CNT;architecture Ctl_CNT_arch of Ctl_CNT issignal qh:std_logic_vector(3 downto 0);signal ql: std_logic_vector(3 downto 0);begin p1: process(back,rst,clr,clk) begin if clr"event and clr="1" then qh<="0000"; ql<="0000"; elsif rst"event and rst="1" then qh<="0110"; ql<="0110"; elsif clk"event and clk="1"then if back"event and back="1" then if ql="0000" then if qh="0000" then ql<="1001" ;qh<="1001"; else qh<=qh-"1"; end if; else ql<=ql-"1" ; end if ; else if ql="1001" then if qh="1001" then ql<="0000" ;qh<="0000"; else qh<=qh+"1"; end if; else ql<=ql+"1"; end if ; end if; end if; end process p1; p2:process(qh,ql) begin case qh is when"0000"=> dis_h<="0111111"; when"0001"=> dis_h<="0000110"; when"0010"=> dis_h<="1011011"; when"0011"=> dis_h<="1001111"; when"0100"=> dis_h<="1100110"; when"0101"=> dis_h<="1101101"; when"0110"=> dis_h<="1111101"; when"0111"=> dis_h<="0000111"; when"1000"=>dis_h<="1111111"; when"1001"=> dis_h<="1101111"; when others=>dis_h<="0000000"; end case; case ql is when"0000"=> dis_l<="0111111"; when"0001"=> dis_l<="0000110"; when"0010"=> dis_l<="1011011"; when"0011"=> dis_l<="1001111"; when"0100"=> dis_l<="1100110"; when"0101"=> dis_l<="1101101"; when"0110"=> dis_l<="1111101"; when"0111"=>dis_l<="0000111"; when"1000"=> dis_l<="1111111"; when"1001"=> dis_l<="1101111"; when others=> dis_l<="0000000"; end case;end process p2;end Ctl_CNT_arch;
2023-09-04 00:18:011

请问在VHDL语言中,顺行语句和并行语句的区别是什么?尽量完整哦。考试题呢。

VHDL的并行语句用来描述一组并发行为,它是并发执行的,与程序的书写顺序无关。进程语句begin进程语句包含在结构体中,一个结构体可以有多个进程语句,多个进程语句间是并行的,并可访问结构体或实体中定义的信号。因此进程语句称为并行描述语句。进行语句结构内部所有语句都是顺序执行的进程语句的启动是由process后敏感信号表中所标明的敏感信号触发来的。各进程间的通信是由信号来传递的语法如下:标记:process(敏感信号表) 变量说明语句;begin 一组顺序语句;end process 标记;标记:为进程标号敏感信号表:是进程用来读取所有敏感信号(包括端口)的列表。变量说明:主要包括变量的数据类型说明、子程序说明等从begin到end process之间是一组顺序执行语句。敏感信号表所谓敏感信号表:就是用来存放敏感信号的列表。在进程语句中,敏感信号指那些发生改变后能引起进程语句执行的信号。敏感信号表中可以使用一个或多个信号,当其中一个或多个信号值改变时,就在进程内部引起语句执行。敏感信号表也可忽略,但程序中必须有其他形式的敏感信号激励。例如wait、wait for、wait until和wait on。进程语句的启动在VHDL语言中,进程有两种工作状态:等待和执行。当敏感信号表中的信号没有变化时,进程处于等待状态;当敏感信号表中的信号有变化时,进程处于执行状态进程语句的同步同一个结构体中不仅可以有多个进程存在,同一个结构体中的多个进程还可以同步。VHDL中通常采用时钟信号来同步进程,具体方法是:结构体中的几个进程共用同一个时钟信号来进行激励。并发信号赋值语句信号赋值语句在进程内部出现时,它是一种顺序描述语句。信号赋值语句在结构体的进程之外出现时,它将以一种并发语句的形式出现。它们在结构体中是并行执行的。注意:并发信号赋值语句是靠事件来驱动的,因此对于并发信号赋值语句来说,只有当赋值符号“<=”右边的对象有事件发生时才会执行该语句。条件信号赋值语句语法结构:目标信号<=表达式1 when 条件1 else 表达式2 when 条件2 else 表达式3 when 条件3 else ... 表达式n-1 when 条件n-1 else 表达式n;VHDL语言程序执行到该语句时,首先要进行条件判断,之后才进行信号赋值。如果满足条件,就将该条件前面那个表达式的值赋给目标信号;如果不满足条件按,就继续判断,直到最后一个表达式,如果前面的条件均不满足就无条件的赋值给最后一个表达式,因为最后一个表达式赋值无需条件。选择信号赋值语句语法结构:with 表达式 select 目标信号<=表达式1 when 选择条件1, 表达式2 when 选择条件2, ... 表达式n when 选择条件n;该语句在赋值之前需要对条件进行判断,附和条件则赋值,否则继续判断,直到最后一个语句。选择赋值语句需要把表达式的值在条件中都列举出来。元件例化语句在VHDL中,引用元件或者模块的说明采用component语句,他的作用是在结构体说明部分说明引用的元件或者模块,是元件说明语句。语法格式:component 引用的元件名 generic 参数说明; port 端口说明;end componet;引用的元件名:是将一个设计现成的实体定义为一个元件,是已经设计好的实体名,用来制定要在结构体中使用的元件名称如果结构体中要进行参数的传递,那么component语句中需要类属参数说明--可选项;引用元件端口的说明,是已经设计好的实体端口名表;元件说明语句在architecture和begin之间。元件例化引用采用componet语句对要引用的原件进行说明后,为了引用的元件正确地嵌入到高一层的结构体描述中,就必须把被引用的元件端口信号于结构体中相应端口信号正确地连接起来,这就是元件例化语句要实现的功能。语法结构:标号名:元件名 generic map(参数映射) prot map(端口映射);其中标号:是元件例化语句的惟一标识,结构体中的标号名应该是惟一的generic map语句:它的功能是实现对参数的赋值操作,从而可以灵活地改变引用元件的参数,为可选项prot map:它的功能是把引用元件的端口信号与实际连接的信号对应起来,从而进行元件的引用操作。VHDL中,为了实现引用元件的端口信号与结构体中的实际信号相连接,往往采用两种映射方法:1、位置映射方法:指port map语句中实际信号的书写顺序于componet语句中端口说明的信号书写语句顺序一致2、名称映射方法:指在port map中将引用的元件的端口信号名称赋值给结构体中要使用例化元件的各个信号(名称映射语句的书写要求不是十分严格,只要把映射的对应信号连接起来就可以,顺序可以颠倒)。生成语句规则结构某些电路部分是由同类元件组成的阵列,这些同类元件叫规则结构,例如:随机RAM、只读ROM、移位寄存器等规则结构一般用生成语句来描述。生成语句有两种形式:for_generate和if_generatefor_generate主要用来描述规则if_generate主要用来描述结构在其端部表现出的不规则性,例如边界条件的特殊性for_generate语句标号:for 循环变量 in 离散范围 generate 并行处理语句; end generate 标号;标号:用来作为for_generate语句的唯一标识符,可选项;循环变量:它的值在每次循环中都将发生变化;离散范围:用来指定循环变量的取值范围,循环变量的取值将从取值范围最左边的值开始并且递增到取值范围的最右边,实际上限定了循环次数for_generate与for_loop语句很类似,但二者有区别。for_loop语句的循环体中的处理语句是顺序的,而for_generate语句中处理的语句是并行处理的,具有并发性。if_generate语句标号:if 条件 generate 并行处理语句;end generate 标号;if_generate语句是并行处理语句,其中不允许出现else子语句
2023-09-04 00:18:241

C语言和VHDL语言的区别

本人刚刚学过VHDL语言,也会C语言。两个语言没有什么联系。前者是面向硬件的,有点类似单片机。一个是面向软件的,是计算机编程。语法结构没什么大的相似。都是编程语言。如果你要制造一个定时炸弹的定时系统,VHDL适合。如果你要写一些病毒或者其他的软件,c就比较合适。。
2023-09-04 00:18:343

与软件语言相比,VHDL有什么特点

  软件编程语言是顺序执行的,而硬件描述语言(比如VHDL)描述的硬件却是并行工作的,所以硬件描述语言中的语句是并行语句,没有先后顺序问题。即使VHDL中有顺序语句,也必须包装成并行语句(例如process语句、过程、函数等)的形式。
2023-09-04 00:19:033

三输入或非门 用VHDL语言怎么编呀? 不用整个程序,就逻辑关系那条程序就行

你好,下面是一个简单的小例子。LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY threeInNot IS PORT ( IN0,IN1,IN2:in std_logic; result: OUT STD_LOGIC); END mux21a; ARCHITECTURE behav OF threeInNot IS BEGIN result <= NOT( IN0 and IN1 and IN2);END behav;
2023-09-04 00:19:341

求高手指点啊!请问在VHDL语言中什么情况下使用std_logic_unsigned程序包?

conv_integer(变量) 转换回来是conv_std_logic_vector(变量,位数)
2023-09-04 00:19:563

用VHDL语言设计一个4位二进制数据比较器,应该怎么设计?

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COMPARE4 IS ——四位比较器 PORT(IA_MORE_THAN_B:IN STD_LOGIC; ——高位比较的标志位的输入 IB_MORE_THAN_A:IN STD_LOGIC; IA_EQUAL_B:IN STD_LOGIC; A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);——两个输入 B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); OA_MORE_THAN_B:OUT STD_LOGIC; OB_MORE_THAN_A:OUT STD_LOGIC; OA_EQUAL_B:OUT STD_LOGIC); END COMPARE4;ARCHITECTURE BEHAV OF COMPARE4 ISBEGIN PROCESS(IB_MORE_THAN_A, IA_EQUAL_B,IA_EQUAL_B) BEGIN IF(IA_EQUAL_B="1")THEN——从最高位比较,如果高位大则停止比较输出结果,否则进行下一位比较 IF(A(3)>B(3))THEN OA_MORE_THAN_B<="1";OB_MORE_THAN_A<="0";OA_EQUAL_B<="0"; ELSIF(A(3)<B(3))THEN OA_MORE_THAN_B<="0";OB_MORE_THAN_A<="1";OA_EQUAL_B<="0"; ELSIF(A(2)>B(2))THEN OA_MORE_THAN_B<="1";OB_MORE_THAN_A<="0";OA_EQUAL_B<="0"; ELSIF(A(2)<B(2))THEN OA_MORE_THAN_B<="0";OB_MORE_THAN_A<="1";OA_EQUAL_B<="0"; ELSIF(A(1)>B(1))THEN OA_MORE_THAN_B<="1";OB_MORE_THAN_A<="0";OA_EQUAL_B<="0"; ELSIF(A(1)<B(1))THEN OA_MORE_THAN_B<="0";OB_MORE_THAN_A<="1";OA_EQUAL_B<="0"; ELSIF(A(0)>B(0))THEN OA_MORE_THAN_B<="1";OB_MORE_THAN_A<="0";OA_EQUAL_B<="0"; ELSIF(A(0)<B(0))THEN OA_MORE_THAN_B<="0";OB_MORE_THAN_A<="1";OA_EQUAL_B<="0"; ELSE ——如果输入中两个数相等的标志位为0,则表明高位不相等,停止比较,输出结果。 OA_MORE_THAN_B<="0";OB_MORE_THAN_A<="0";OA_EQUAL_B<="1"; END IF; ELSEOA_MORE_THAN_B<=IA_MORE_THAN_B;OB_MORE_THAN_A<=IB_MORE_THAN_A;OA_EQUAL_B<=IA_EQUAL_B; END IF; END PROCESS;END BEHAV;
2023-09-04 00:20:131

将VHDL语言改为Verilog HDL语言 LIBRARY IEEE; USE IEEE.STD

2023-09-04 00:20:201

如何用VHDL语言将20MHz分频为500Hz?

library就不写了。主要是用prescaler。现在这个程序输出10kHz。如果你要100kHz,那么就把prescaler减少到500.。基本上是用50MHz的时钟计算,然后prescaler加法运算的速度就是50MHz。但是只有到prescaler加到一定程度的时候才触发输出信号。下面的这段代码输出10kHzPWM信号,占空比50%。我直接在这里写的,有错别怪我。。 entity something is port { CLK_50M : in std_logic; outputpin: out std_logic; --这个是你的输出针脚 }; end something; -- 中间的 architechture我就不写了 process(CLK_50M) signal prescaler : integer in range 0 to 5000 := 0; begin if (CLK_50M"event and CLK_50M = "1") -- trigger event on rising edge(不知道怎么翻译。。。) if (prescaler > 4999) prescaler <= 0; else if (prescaler < 2500) outputpin <= "1"; --输出高电平 else outputpin <= "0"; --输出端输出低电平 end if; prescaler <= prescaler + 1 end if; end if; end process;
2023-09-04 00:20:351

在VHDL语言里实体pin 定义中in bit和out bit区别

in bit 的意思是输入, 数据类型为bitout bit的意思是输出,数据类型为bit一个是输入一个是输出是不一样的
2023-09-04 00:20:551

vhdl语言数据对象有哪几种?作用范围如何?对其赋初值作用有何不同

在非仿真程序中一般不建议使用for语句的,因为复杂点的for语句是综合不了的,一般用于比较简单的功能赋值,比如例化ram用。在仿真语句中是可以识别for语句的,一般用于对程序的赋值之类的,功能和C语言的功能是差不多的,只是格式不太一样。
2023-09-04 00:21:052

用VHDL语言编写程序

我用quartusⅡ已编译并且仿真都对的,我写的是0亮1灭,如果实际情况与这相反,你自己倒一下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_SIGNED.ALL;USEIEEE.numeric_std.all;ENTITYtestISPORT(clock:instd_logic;-----clock1加48MHz的信号row:outstd_logic_vector(0to7));ENDtest;ARCHITECTUREbehaveOFtestISCONSTANTfp_clka:INTEGER:=12000000;---扫描信号频率为2HzSIGNALa:INTEGERRANGE0TO12000001;signalsaomiao:integerrange0to9;SIGNALclka:std_logic;BEGINPROCESS(clock)BEGINIFrising_edge(clock)THENIFa<fp_clkathen--clkaa<=a+1;clka<=clka;ELSEa<=0;clka<=NOTclka;endif;endif;endprocess;process(clka)BEGINIFrising_edge(clka)THENsaomiao<=saomiao+1;ifsaomiao=9thensaomiao<=0;endif;casesaomiaois---"1"代表不亮,"0"代表亮when0=>row<="01111111";when1=>row<="10111111";when2=>row<="11011111";when3=>row<="11101111";when4=>row<="11110111";when5=>row<="11111011";when6=>row<="11111101";when7=>row<="11111110";when8=>row<="00000000";whenothers=>row<="11111111";ENDCASE;ENDIF;endprocess;ENDbehave;
2023-09-04 00:21:163

用vhdl 语言设计 序列信号发生器

10110101序列信号发生器.vhdlibrary IEEE; use IEEE.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count8 is port ( r: in std_logic; clk: in STD_LOGIC; cout: out std_logic ); end count8; architecture count8_arch of count8 is signal dd: std_logic_vector ( 2 downto 0 ); begin count: process ( r,clk ) begin if ( r="1" ) then dd<="000"; elsif( clk"event and clk = "1") then dd <= dd + "1"; end if ; end process count ; with dd select cout<="1"when"000", "0"when"001", "1"when"010", "1"when"011", "0"when"100", "1"when"101", "0"when"110", "1"when"111", "0"when others ;
2023-09-04 00:21:261

VHDL语言 怎么理解并行语句和PROCESS的区别 IF怎么用 求详解 可以追加

并行语句可以理解为 好多个逻辑电路一起进行数据处理 而不是单片机那种一环一环 需要前面的语句处理完了 才能处理后面的语句, process就是一个个程序快 相当于一个个电路快一个电路块是一个process process里面是逻辑电路或时序电路 if的用法注意就是一定要在时序电路中才能用 就是一定在process里面才行
2023-09-04 00:21:372

关于这个vhdl语言的问题,需要详细的解释,高分求助

你在什么地方复制来的,乱七八糟的
2023-09-04 00:21:452

将VHDL语言转换成Verilog HDL语言

module cnt99(clk, rst, en, cq, LED1, LED2, cout); input clk; input rst; input en; output [6:0] cq; reg [6:0] cq; output [3:0] LED1; reg [3:0] LED1; output [3:0] LED2; reg [3:0] LED2; output cout; reg cout; always @(posedge clk or posedge rst or en) begin: xhdl0 reg [3:0] cqi; reg [6:0] cqii; reg [3:0] hi; if (rst == 1"b1) begin cqi = {4{1"b0}}; hi = {4{1"b0}}; end else begin if (en == 1"b1) begin if (hi < 9) begin if (cqi < 9) cqi = cqi + 1; else begin cqi = {4{1"b0}}; hi = hi + 1; end end else hi = {4{1"b0}}; if (cqii < 99) cqii = cqii + 1; else cqii = {7{1"b0}}; end end if (cqi == 9 & hi == 9) cout <= 1"b1; else cout <= 1"b0; cq <= cqii; LED1 <= hi; LED2 <= cqi; endendmodule
2023-09-04 00:21:552

请问在VHDL语言中,顺行语句和并行语句的区别是什么?尽量完整哦。考试题呢。

顺序语句是用于行为描述的,是不能直接置于结构体中的,需要用进程语句包装成并行语句,或者用于描述子程序(函数、过程)。并行语句是用于数据流描述或者结构描述的,在结构体中的每一个并行语句,都描述了一个电路模块,并行语句是没有描述顺序的,结构体中的并行语句,可以按任何顺序书写。
2023-09-04 00:22:061

VHDL语言100例详解的图书目录

绪论——专用集成电路(asic)设计与vhdl语言(代前言)i asic设计面临严峻的挑战ii 硬件描述语言 vhdl的出现与发展状况iii vhdl语言的特点iv vhdl语言高级综合v vhdl语言混合级模拟vi vhdl语言高级综合系统talentvii vhdl语言100例的选取与本书的撰写目标第1例 带控制端口的加法器第2例 无控制端口的加法器第3例 乘法器第4例 比较器第5例 二路选择器第6例 寄存器第7例 移位寄存器第8例 综合单元库第9例 七值逻辑与基本数据类型第10例 函数第11例 七值逻辑线或分辨函数第12例 转换函数第13例 左移函数第14例 七值逻辑程序包第15例 四输入多路器第16例 目标选择器第17例 奇偶校验器第18例 映射单元库及其使用举例第19例 循环边界常数化测试第20例 保护保留字第21例 进程死锁第22例 振荡与死锁第23例 振荡电路第24例 分辨信号与分辨函数第25例 信号驱动源第26例 属性transaction和分辨信号第27例 块保护及属性event,stable第28例 形式参数属性的测试第29例 进程和并发语句第30例 信号发送与接收第31例 中断处理优先机制建模第32例 过程限定第33例 整数比较器及其测试第34例 数据总线的读写第35例 基于总线的数据通道第36例 基于多路器的数据通道第37例 四值逻辑函数第38例 四值逻辑向量按位或运算第39例 生成语句描述规则结构第40例 带类属的译码器描述第41例 带类属的测试平台第42例 行为与结构的混合描述第43例 四位移位寄存器第44例 寄存/计数器第45例 顺序过程调用第46例 vhdl中generic缺省值的使用第47例 无输入元件的模拟第48例 测试激励向量的编写第49例 delta延迟例释第50例 惯性延迟分析第51例 传输延迟驱动优先第52例 多倍(次)分频器第53例 三位计数器与测试平台第54例 分秒计数显示器的行为描述第55例 地址计数器第56例 指令预读计数器第57例 加、减、乘指令的译码和操作第58例 2-4译码器结构描述第59例 2-4译码器行为描述第60例 转换函数在元件例示中的应用第61例 基于同一基类型的两分辨类型的赋值相容问题第62例 最大公约数的计算第63例 最大公约数七段显示器编码第64例 交通灯控制器第65例 空调系统有限状态自动机第66例 fir滤波器第67例 五阶椭圆滤波器第68例 闹钟系统的控制器第69例 闹钟系统的译码器第70例 闹钟系统的移位寄存器第71例 闹钟系统的闹钟寄存器和时间计数器第72例 闹钟系统的显示驱动器第73例 闹钟系统的分频器第74例 闹钟系统的整体组装第75例 存储器第76例 电机转速控制器第77例 神经元计算机第78例 am2901四位微处理器的alu输入第79例 am2901四位微处理器的alu第80例 am2901四位微处理器的ram第81例 am2901四位微处理器的寄存器第82例 am2901四位微处理器的输出与移位第83例 am2910四位微程序控制器中的多路选择器第84例 am2910四位微程序控制器中的计数器/寄存器第85例 am2910四位微程序控制器的指令计数器第86例 am2910四位微程序控制器的堆栈第87例 am2910四位微程序控制器的指令译码器第88例 可控制计数器第89例 四位超前进位加法器第90例 实现窗口搜索算法的并行系统(1)——协同处理器第91例 实现窗口搜索算法的并行系统(2)——序列存储器第92例 实现窗口搜索算法的并行系统(3)——字符串存储器第93例 实现窗口搜索算法的并行系统(4)——顶层控制器第94例 mb86901流水线行为描述组成框架第95例 mb86901寄存器文件管理的描述第96例 mb86901内alu的行为描述第97例 移位指令的行为描述第98例 单周期指令的描述第99例 多周期指令的描述第100例 mb86901流水线行为模型参考文献附录i 100例内容摘要一览表附录ii vhdl专用术语中英文对照附录iii tllent系统 vhdl模拟器使用说明附光盘:内容包括100例有关的vhdl描述文件及talent系统vhdl模拟器
2023-09-04 00:22:261

VHDL语言的前景怎么样?是不是该淘汰了?

不是吧。楼上说的。。。我现在正对VHDL感兴趣呢,这不是打消我积极性了么。。。楼主是什么专业的啊,微电子的吗?
2023-09-04 00:22:402

VHDL语言编程用什么编译软件

疑似假用户022442
2023-09-04 00:22:502

&在VHDL语言中是什么意思,具体怎么用呢?谢谢

&的用法看楼上的解释这个程序作用很简单:当clk1的上升沿来的时候,讲fskcodein和datacom的1位合并赋给datacom估计这里datacom是个std_logic_vector(1 downto 0)类型的,实现的就是吧fskcodein的数据移位输入
2023-09-04 00:23:004

VHDL语言UART代码

UART通信library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity UART is --通用异步串行收发器实体Port ( UART_clk : in STD_LOGIC; --收发器时钟输入,50MHz UART_rst : in std_logic; UART_TX_buf : in STD_LOGIC_VECTOR(7 downto 0); UART_TX_TI : out std_logic; UART_TX_EN : in std_logic; UART_TXD : out std_logic; UART_baudrate : out STD_LOGIC); --收发器波特率输出19200的14倍频(测试完成后可以取消)end UART;architecture Behavioral of UART issignal baudrate_counter :std_logic_vector(6 downto 0):="0000000"; --波特率发生器分频计数器signal baudrate_out :std_logic:="0"; --波特率发生器波特率信号signal TX_clk : std_logic:="0";signal tx_clk_counter : std_logic_vector(3 downto 0) :="0000";type TX_STATE is (TX_idle,TX_transfer);signal TX_current_state,TX_next_state : Tx_state;signal TX_buf_shift : std_logic_vector(9 downto 0):= "0111111111";signal TX_counter :std_logic_vector(3 downto 0):="0000";signal TX_start : std_logic:="0";signal TXD_buf: std_logic:="0";signal TX_TI : std_logic:="1";beginbaudrate: process (UART_clk) --波特率发生器进程begin if rising_edge(UART_clk) then --对输入时钟进行分频获得所需波特率的14倍频if (baudrate_counter >= "1011100") thenbaudrate_counter <= "0000000";baudrate_out <= not baudrate_out;elsebaudrate_counter <= baudrate_counter + "1";baudrate_out <= baudrate_out;end if; end if;end process;UART_baudrate <= baudrate_out; --将波特率信号传给输出接口sync_proc_tx: process(baudrate_out,UART_rst) --同步进程,状态机转换begin if (UART_rst = "1") thentx_current_state <= tx_idle; elsif (falling_edge(baudrate_out)) thentx_current_state <= TX_next_state; end if;end process;comb_proc_tx: process(baudrate_out,UART_rst) --组合逻辑,状态机转换、输出begin if (UART_rst = "1") thenTX_next_state <= TX_idle;TX_counter <= "0000";TXD_buf <= "1";TX_start <= "0";TX_TI <= "1";TX_clk_counter <= "0000";TX_buf_shift <= "1111111111"; elsif (rising_edge(baudrate_out)) thencase TX_current_state iswhen TX_idle => if (UART_TX_EN = "1" and TX_TI = "1") then --如果满足发送起始条件 TX_next_state <= TX_transfer; --转换下一状态到发送 TX_counter <= "1010"; --发送bit计数器置数,发送10个bit,8bit数据加上开始结束位 TXD_buf <= "1"; --发送寄存器发送‘1" TX_start <= "1"; --发送过程标志 TX_TI <= "0"; --发送进行中标志,表示发送器不可用 TX_clk_counter <= "1101"; --分频计数器置数 TX_buf_shift <= "1" & UART_TX_buf & "0"; --寄存器保存数据与开始结束位 else TX_next_state <= TX_idle; TX_counter <= "0000"; TXD_buf <= "1"; TX_start <= "0"; TX_TI <= "1"; TX_clk_counter <= "0000"; TX_buf_shift <= "1111111111"; end if;when TX_transfer => if (TX_start = "1" and TX_TI = "0" and TX_counter /= "0000") then --进入正常发送状态 if (TX_clk_counter >= "1101") then --如果分频完成 TX_next_state <= TX_transfer; --没有发送完成,继续进入发送状态 TX_counter <= TX_counter - "1"; --发送bit计数器自减 TXD_buf <= TX_buf_shift(0); --发送数据 TX_start <= "1"; --发送过程标志继续允许 TX_TI <= "0"; --发送器不允许使用 TX_clk_counter <= "0000"; --分频计数器清灵,继续下一次 TX_buf_shift <= "1" & TX_buf_shift(9 downto 1); --数据移位 else TX_next_state <= TX_transfer; TX_counter <= TX_counter; TXD_buf <= TXD_buf; TX_start <= "1"; TX_TI <= "0"; TX_clk_counter <= TX_clk_counter + "1"; TX_buf_shift <= TX_buf_shift; end if; else TX_next_state <= TX_idle; TX_counter <= "0000"; TXD_buf <= "1"; TX_start <= "0"; TX_TI <= "1"; TX_clk_counter <= "0000"; TX_buf_shift <= "1111111111"; end if;when others => TX_next_state <= TX_idle; TX_counter <= "0000"; TXD_buf <= "1"; TX_start <= "0"; TX_TI <= "1"; TX_clk_counter <= "0000"; TX_buf_shift <= "1111111111";end case; end if;end process;UART_TXD <= TXD_buf;UART_TX_TI <= TX_TI;end Behavioral;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity transmitter isport(cs,clk,rx:in std_logic;indata:in std_logic_vector(7 downto 0); txd,ti:out std_logic);end transmitter;architecture tr1 of transmitter issignal sig_count:std_logic_vector(3 downto 0);signal sig_ti,sig_ti1,sig_txd,sig_buffer:std_logic;signal sig_data:std_logic_vector(7 downto 0);signal sig_txddata:std_logic_vector(9 downto 0);beginprocess(cs,clk,rx)beginif(clk"event and clk="1")thenif(cs="0")thenif(sig_buffer="0")thenif(rx="0")thenfor i in 8 downto 1 loopsig_txddata(i)<=indata(i-1);end loop;sig_txddata(9)<="0"; --加起始位sig_data<=indata;sig_buffer<="1";end if;elsefor i in 9 downto 1 loopsig_txddata(i)<=sig_txddata(i-1);end loop;sig_txd<=sig_txddata(9);sig_txddata(0)<="1"; --加停止位if(sig_count="1000")thensig_count<="0000";elsif(sig_count="0000"and sig_ti="1")thensig_buffer<="0";sig_ti<="0";elsesig_count<=sig_count+"1";sig_ti<="1";end if;end if;end if;end if;end process;processbeginif(sig_ti="0")thentxd<="1";else txd<=sig_txd;end if;end process;ti<=not sig_ti;end tr1;
2023-09-04 00:23:081

VHDL语言的sll运算符怎么使用.求例程.

操作数 SLL N; N为移位的位数。设操作数A=“11010001”,则语句A SLL 1; 结果为“10100010”
2023-09-04 00:23:191

三态门用VHDL语言怎么写?

library ieee;use ieee.std_logic_1164.all;entity yjynor isport(din:in std_logic; en: in std_logic; dout: out std_logic);end;architecture one of yjynor isbeginprocess(din,en)begin if en="1" then dout<=din; else dout<="Z"; --高阻态 end if;end process;end;
2023-09-04 00:23:291

上升的vhdl描述语言是什么!?

你问的是上升沿?
2023-09-04 00:23:372

本设计采用先进EDA技术,利用QuartusII工作平台及硬件描述语言VHDL,设计一种电子密码锁。设计的密码锁的

不知道你是不是要完整的系统,需要的话百度hi联系我 给你发过去,内容很大
2023-09-04 00:23:572

如何用VHDL语言设计四位全加器

library IEEE;use IEEE.Std_logic_1164.ALL;entity pro1 is port(A1,B1,G1BAR,A0,B0,G0BAR:in std_logic; Y20,Y21,Y22,Y23,Y10,Y11,Y12,Y13:out std_logic);end pro1;architecture pro1_arch of pro1 is begin Y10<="0" when(B0="0") and ((A0="0") and (G0BAR="0")) else "1"; Y11<="0" when(B0="0") and ((A0="1") and (G0BAR="0")) else "1"; Y12<="0" when(B0="1") and ((A0="0") and (G0BAR="0")) else "1"; Y13<="0" when(B0="1") and ((A0="1") and (G0BAR="0")) else "1"; Y20<="0" when(B1="0") and ((A1="0") and (G1BAR="0")) else "1"; Y21<="0" when(B1="0") and ((A1="1") and (G1BAR="0")) else "1"; Y22<="0" when(B1="1") and ((A1="0") and (G1BAR="0")) else "1"; Y23<="0" when(B1="1") and ((A1="1") and (G1BAR="0")) else "1";end pro1_arch;
2023-09-04 00:24:084

我想学习VHDL语言,不知有谁能给我解答我的几个疑惑

VHDL可以描述一个单片机的功能,但即使学习了VHDL,也还是需要学习单片机的。因为VHDL是用于设计硬件系统的,而单片机只是一个硬件系统的实例,不了解单片机就无法设计它。VHDL用于设计硬件系统,与软件关系不太大。如果你设计的硬件系统中有MPU,需要运行软件的话,你还是需要学习软件设计的。学习VHDL除了看点书扫扫盲之外,主要是需要动手实际设计一些硬件系统。可以先从小一点的实例开始,基于FPGA来实现你的设计。VHDL不仅可以设计电子玩具,而且可以设计手机、电脑、CPU等等。
2023-09-04 00:24:241

用VHDL语言,设计一个数码管显示的程序

数码管显示程序内容肯定
2023-09-04 00:24:343

用VHDL语言IF语句来实现4选1数据选择器,亲们我很着急啊,有没有好心人啊,帮帮我 啊

entity mux4_1 isport ( a,b,c,d: in std_logic; --4位输入信号,数据类型自己改s1,s2: in std_logic; --选择信号y : out std_logic ); --输出信号,数据类型和输入应一致end entity;architecture bhv of mux4_1 issignal s :std_logic_vector(1 downto 0);begins<=s1&s2;process(s,a,b,c,d)beginif s="00" then y<=a;elsif s="01" then y<=b;elsif s="10" then y<=c;else y<=d;end if;end process;end bhv;
2023-09-04 00:24:441

询问VHDL语言XOR门的问题

这条语句的编译结果和异或的先后顺序没有关系如果你只是想知道RTL级的结果,那么要看是哪个综合工具来综合,而且要看综合选项一般会综合为这个样子AXORB--XOR=>PCXORD--
2023-09-04 00:24:522

用vhdl语言实现8位并转串电路和串转并电路,求大神指导!!急用!!

可以参阅《VHDL数字系统设计》(科学出版社2009年出版)p.155~159,上面有完整的电路描述和仿真图。
2023-09-04 00:25:032

在VHDL语言中怎样实现条件编译?

可以用硬件语言编写测试文件,对目标系统进行仿真
2023-09-04 00:25:222

帮忙用VHDL语言编写信号发生器(三角波,方波,锯齿波),要求用计数器,方波,锯齿波幅值最大为10。

用vhdl编写信号发生器输出三角波,方波,锯齿波由于用VHDL编写输出的是数字信号,所以要在后面加入D/A转换实现方式 PLD(或FPGA)+D/A转换 用PLD(或FPGA)产生3种循环变化的数据量(这里用4位 实现幅值10=‘1010) 1 用0-10的循环加法计数 实现锯齿波 2 用0-10-0循环加减计数器 实现三角波 3 用0-10-0循环加减计数实现 方波 Library IEEE;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity sig is Port( clk,reset: in std_logic;Mod: in std_logic_vector(1 downto 0); --MOD为模式选择--00输出递增锯齿波 01输出递减锯齿波 --10 输出三角波 11 输出方波 dout: out std_logic_vector(3 downto 0));End sig;Architecture one of sig is Signal count:std_logic_vector(3 downto 0); --count 为计数 Signal addsub:std_logic; -- addsub 为0时 加法计数Begin -- 为1时 减法计数 cout<= count; -- 将计数值送给输出 Process(clk,reset,mod) Begin If reset="1" then -- 异步复位 Count<=”0000”; Elsif clk"event and clk="1" then If count=”1010” then --同步复位 Count<=”0000”; End if; Case mod is When “00” => if count --所得递增锯齿波波形周期为10个时钟周期count<= count+1;When “01” => count<= count-1; --所得递减锯齿波形周期为10个时钟周期When “10” =>if (addsub="0") then --所得三角波形周期为20个时钟周期count<= count+1; if (count=10) then --加法计数到10 addsub <="1" --addsub 为1 开始减法计数 else addsub<="0"; end if; else count<=count-1; if (count<1) then addsub<="0"; else addsub<="1"; end if; end if; when “11” =>if (addsub="0") then count<= count+10; --步进为10 if (count=10) then addsub <="1" else addsub<="0"; end if; else count<=count-10; if (count<10) then addsub<="0"; else addsub<="1"; end if; --所得方波周期为4个时钟周期 end if; When others count<="0000"; End case; End if; End process;End one;
2023-09-04 00:25:441

问一个VHDL语言的问题???

VHDL中没有==
2023-09-04 00:25:523

在VHDL语言中,单引号和双引号有什么区别,具体可以举一下例子吗

单引号表示字符文字,就是单个字符,例如"0"、"X"、"H"、"Z"等等;双引号表示字符串文字,也就是多个字符,例如"00"、"0110"、"ABC"等等。
2023-09-04 00:26:001

vhdl语言中 什么时候需要加上process()啊

要语句顺序执行的情况下。
2023-09-04 00:26:082

vhdl语言中if语句里条件句到底要不要加括号?

可以加,也可以不加,没有区别。
2023-09-04 00:26:182

VHDL语言 循环设计求教!

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityledisport(reset:instd_logic;clk:instd_logic;led:outstd_logic_vector(2downto0));endentity;architecturebehaveofledissignalcnt:std_logic_vector(24downto0);signalcnt_1:std_logic;signalcnt_2:std_logic;signalcnt_set:std_logic;beginprocess(clk,reset)variablecount:integerrange0to2:=0;beginifreset="0"thenled<=(others=>"0");count:=0;elsifclk"eventandclk="1"thenifcnt_set="1"thencasecountiswhen0=>led<="001";when1=>led<="010";when2=>led<="100";whenothers=>null;endcase;ifcount=2thencount:=0;elsecount:=count+1;endif;endif;endif;endprocess;process(reset,clk)beginifreset="0"thencnt<=(others=>"0");cnt_1<="0";cnt_2<="0";cnt_set<="0";elsifclk"eventandclk="1"thenifcnt_2="0"andcnt_1="1"andcnt(23)="1"thencnt_set<="1";elsecnt_set<="0";endif;cnt<=cnt+1;cnt_2<=cnt_1;cnt_1<=cnt(23);endif;endprocess;endbehave;看起来提问的意思是做一个流水灯,不知道这样满足不满足你的要求,T:resetL:L1L2L3;当T=0时L1L2L3输出都为0;T=1时,循环输出流水灯,可以通过修改cnt(num)中的num数来调整循环的快慢.num越大,循环时间越长;
2023-09-04 00:26:252

用VHDL语言设计一个共阴极七段数码管的译码电路,急求大神解答,高分求助!!!不要粘贴复制的

74LS49是一个7段译码器,其VHDL描述如下:LIBRARYIEEE;USE IEEE.Std_logic_1164.ALL;ENTITYls49 IS PORT(bl: IN Std_logic; bi: IN Std_logic_vector(3 DOWNTO 0); a,b,c,d,e,f,g: OUT Std_logic);ENDls49;ARCHITECTURE behavl_49 OF ls49 IS SIGNAL s: Std_logic_vector(6 DOWNTO 0);BEGIN PROCESS (bi,bl) BEGIN IF (bl/="1") AND (bl/="H") THEN s<=(OTHERS => "0"); ELSE CASE bi IS WHEN "0000"=>s<="0111111"; WHEN "0001"=>s<="0000110"; WHEN "0010"=>s<="1011011"; WHEN "0011"=>s<="1001111"; WHEN "0100"=>s<="1100110"; WHEN "0101"=>s<="1101101"; WHEN "0110"=>s<="1111101"; WHEN "0111"=>s<="0100111"; WHEN "1000"=>s<="1111111"; WHEN "1001"=>s<="1101111"; WHEN "1010"=>s<="1110111"; WHEN "1011"=>s<="1111100"; WHEN "1100"=>s<="0111001"; WHEN "1101"=>s<="1011110"; WHEN "1110"=>s<="1111001"; WHEN "1111"=>s<="1110001"; WHEN OTHERS=>s<="0000000"; END CASE; END IF; END PROCESS; a <= s(0); b <= s(1); c <= s(2); d <= s(3); e <= s(4); f <= s(5); g <= s(6);END behavl49;
2023-09-04 00:26:351