2023
正负
数控
调制
信号发生器
设计
实验三:正负脉宽数控调制信号发生器的设计
1.实验目的
〔1〕学习isEXPERT/MAX+plus Ⅱ/Foudation Series软件的根本使用方法。
〔2〕学习GW48-CK EDA实验开发系统的根本使用方法。
〔3〕学习VHDL程序中数据对象、数据类型、顺序语句、并行语句的综合使用。
2.实验内容
设计并调试好一个脉宽数控调制信号发生器,此信号发生器是由两个完全相同的可自由加载加法计数器LCNT8组成的,它的输出信号的高/低电平脉宽可以分别由两组8位预置数进行控制。
用GW48_CK EDA实验开发系统〔拟采用的实验芯片的型号为isPLSI1032E OLCC_84〕进行硬件验证。
3.实验条件
〔1〕画出系统的原理框架图,说明系统中各主要局部的功能。
〔2〕编写各个VHDL源程序。
〔3〕根据选用的软件编好用于系统仿真的测试文件。
〔4〕根据选用的软件及EDA实验开发装置编好用于硬件验证的管脚锁定文件。
〔5〕记录系统仿真、硬件验证结果。
〔6〕记录式样过程中出现的问题、解决方法及本卷须知。
4.实验设计
〔1〕系统原理图框架
脉宽数控调制信号发生器逻辑图
〔2〕VHDL源程序
源程序pulse.vhd
library ieee;
use ieee.std_logic_1164.all;
entity lcnt8 is
port(clk,ld:in std_logic;
d:in integer range 0 to 255;
cao:out std_logic);
end entity lcnt8;
architecture art of lcnt8 is
signal count:integer range 0 to 255;
begin
process(clk) is
begin
if clk'event and clk='1' then
if ld='1' then count<=d;
else count<=count+1;
end if;
end if;
end process;
process(clk,count) is
begin
if clk'event and clk='1' then
if count=255 then cao<='1';else cao<='0';end if;
end if;
end process;
end architecture art;
library ieee;
use ieee.std_logic_1164.all;
entity pulse is
port(clk:in std_logic;
a,b:in std_logic_vector(7 downto 0);
psout:out std_logic);
end entity pulse;
architecture art of pulse is
component lcnt8 is
port(clk,ld:in std_logic;
d:in std_logic_vector(7 downto 0);
cao:out std_logic);
end component lcnt8 ;
signal cao1,cao2:std_logic;
signal ld1,ld2:std_logic;
signal psint:std_logic;
begin
u1:lcnt8 port map(clk=>clk,ld=>ld1,d=>a,cao=>cao1);
u2:lcnt8 port map(clk=>clk,ld=>ld2,d=>b,cao=>cao2);
process(cao1,cao2) is
begin
if cao1='1' then psint<='0';
elsif cao2'event and cao2='1'then psint<='1';
end if;
end process;
ld1<=not psint;ld2<=psint;psout<=psint;
end architecture art;
〔3〕波形仿真文件
Module pulse;
Clk,a8[7..0],b8[7..0],psout pin;
Test_vectors
(Clk,a8[7..0],b8[7..0]->[psout]);
[0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1]->[x];
[1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]->[x];
[0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1]->[x];
[1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0]->[x];
[0,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,1]->[x];
[1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0]->[x];
[0,0,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1]->[x];
[1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]->[x];
[0,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1]->[x];
[1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]->[x];
[0,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1]->[x];
[1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0]->[x];
[0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1]->[x];
[1,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0]->[x];
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]->[x]
〔4〕管脚锁定文件
管脚锁定设计图
管脚锁定文件
//pulse.ppn
//part: isPLSI1032E OLCC_84
//fromat:
pinnanme pintype lock
clk in 1
a7 in 17
a6 in 18
a5 in 70
a4 in 16
a3 in 71
a2 in 43
a1 in 2
a0 in 42
b7 in 30
b6 in 29
b5 in 27
b4 in 62
b3 in 58
b2 in 61
b1 in 44
b0 in 84
psout out 59
5.实验结果及总结
〔1〕系统仿真情况
系统功能仿真结果
系统时序仿真结果
〔2〕硬件验证情况
〔3〕实验开发过程中出现的问题、解决的方法及本卷须知
1〕本实验仿真结果以16进制显示。
2〕系统仿真过程中,随着输入值设定的改变,lcnt8等一系列的数据也随着变化。