FPGA HDL语言设计入门实例
【例3-1】 2选1多路选择器程序。 (P31)
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-28320.png
LIBRARY IEEE; --IEEE库使用说明语句
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux21 IS --实体说明部分
PORT(
a,b : IN STD_LOGIC;
s: IN STD_LOGIC;
y: OUT STD_LOGIC
);
END ENTITY mux21;
ARCHITECTURE mux21a OF mux21 IS --结构体说明部分
BEGIN
PROCESS(a,b,s)
BEGIN
IF s='0' THEN y = 20 ) ; -- 该表达式是布尔表达式
END PROCESS cwait5 ;
END behavioral ;
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-31508.png
【例4-6】 多条件WAIT语句的示例程序。 (P68)
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-4647.png
cwait6 : PROCESS
BEGIN
M
-- 多条件WAIT语句
WAIT ON data0, data1,q UNTIL((temp + 5 ) >= 20) FOR 34 ns ;
END PROCESS cwait6 ;
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-2717.png
【例4-7】 信号代入语句示例程序。 (P68)
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-24987.png
ARCHITECTURE behavioral OF example_dairu IS
SIGNAL a, b, c, d,e, f : STD_LOGIC ;
SIGNAL temp0, temp1, temp2, temp3, temp4, temp5 : STD_LOGIC ;
BEGIN
cdairu : PROCESS
BEGIN
temp0 <= a NAND b ; -- 与非
temp1 <= c NOR d ; -- 或非
temp2 <= e XOR f AFTER 5 ns ; -- 异或门延迟
temp3 <= ( a NAND b ) NOR ( c NAND d ) ;
temp4 <= ( c OR d ) NAND ( e OR f ) ;
temp5 <= a XOR b XOR c XOR d XOR e XOR f ;
END PROCESS cdairu ;
END behavioral ;
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-28462.png
【例4-8】 变量赋值语句示例程序。 (P69)
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-21440.png
ARCHITECTURE behavioral OF example_fuzhi IS
CONSTANT cvolt : REAL : = 3.3 ; -- 定义常数
CONSTANT ccurrent : REAL : = 4.0 ;
VARIABLE temp0, temp1 : REAL ; -- 定义变量
VARIABLE temp2, temp3 : INTEGER RANGE 0 TO 255 : = 10 ;
VARIABLE temp4 : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ;
VARIABLE temp5 : STD_LOGIC ;
SIGNAL a : STD_LOGIC ; -- 定义信号
SIGNAL b : REAL ;
SIGNAL c : INTEGER ;
SIGNAL d : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ;
BEGIN
cfuzhi : PROCESS
BEGIN
temp0 : = cvolt ; -- 变量直接赋值
temp1 : = ( cvolt + 1.8 ) * ccurrent ; -- 变量表达式赋值
temp2 : = c + 78 ;
temp3 : = c / 5 ; -- 此时c必须是5的倍数
temp4 : = d ;
temp5 : = temp4 ( 2 ) ;
END PROCESS cfuzhi ;
END behavioral ;
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-28506.png
【例4-9】 变量赋值和信号量代入的对比示例程序。 (P69)
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-11530.png
ARCHITECTURE behavioral OF example_duibi IS
SIGNAL d0, d1, d2, d3 : STD_LOGIC ; -- 定义信号
SIGNAL q0, q1 : STD_LOGIC ;
BEGIN
cduibi_1 :PROCESS (d0, d1, d2, d3 )
BEGIN
d2 <= d0 ; -- 信号量代入
q0 <= d2 OR d3 ;
d2 <= d1 ; -- 信号量代入
q1 <= d2 OR d3 ;
END PROCESS cduibi_1 ;
cduibi_2 : PROCESS (d0, d1, d3 )
VARIABLE m2 : STD_LOGIC ;
BEGIN
m2 : = d0 ; -- 变量赋值
q0 <= m2 OR d3 ;
m2 : = d1 ; -- 变量赋值
q1 <= m2 OR d3 ;
END PROCESS cduibi_2 ;
END behavioral ;
进程cduibi_1的运行结果:
q0 = d1 OR d3 并且 q1 = d1 OR d3
进程cduibi_2的运行结果:
q0 = d0 OR d3 而 q1 = d1 OR d3
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-15662.png
【例4-10】 采用单IF语句来描述D触发器的示例程序。 (P71)
file:///C:\Users\wzy\AppData\Local\Temp\ksohtml\wps_clip_image-281.png
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY cdff1 IS
PORT( d : IN STD_LOGIC ;
clk : IN STD_LOGIC ;
q : OUT STD_LOGIC ;
qnot : OUT STD_LOGIC ) ;
END cdff1 ;
ARCHITECTURE dataflow OF cdff1 IS
BEGIN
cdff_example : PROCESS ( clk )
BEGIN
IF ( clk'EVENT AND clk = '1' ) THEN -- 单IF语句
q <= d ;
qnot <= NOT d ;
END IF ;
END PROCESS cdff_example ;
END dataflow ;
EP4CE6E22C8N
http://redirect.simba.taobao.com/rd?w=unionnojs&f=http%3A%2F%2Fre.taobao.com%2Feauction%3Fe%3DgoZkOBVPhbvebLdhAWchHDLwfTWbGSOTvDQl%252FsD9dZuLltG5xFicOSZqewpHPyZzWFp1PMcy6Qyfhi%252BjTOUzNfRHn82V7C%252B01UGFCTlGxNeB3ujUJI0OeA%253D%253D%26ptype%3D100010&k=e2e107a2b72ca1b1&c=un&b=alimm_0&p=mm_51454259_5300107_15952998
菜鸟学习了,