1
2
3 --本程序用来测试STM32对CPLD的读写操作
4
5 --测试功能如下:
6
7 --向0x05地址写入0x01,LED灯停止闪烁,写入其他数据闪烁继续
8
9 --0x03,0x04寄存器为定值,可以通过STM32读取然后使用串口输出看看是否一致
10
11
12
13 --文件名:AD.vhd
14
15 library ieee;
16
17 use ieee.std_logic_1164.all;
18
19 use ieee.std_logic_unsigned.all;
20
21
22
23 entity AD is
24
25 port(
26
27 -- 系统信号线
28
29 CLK: in std_logic;
30
31 LED: out std_logic;
32
33 -- ARM相连的信号线
34
35 Adr_L: in std_logic_vector(7 downto 0); --A7...A0,只使用了低八位地址线
36
37 D: inout std_logic_vector(7 downto 0); --只使用了低八位数据线
38
39 FSMC_NE4: in std_logic;
40
41 FSMC_NOE: in std_logic;
42
43 FSMC_NWE: in std_logic
44
45 );
46
47 end AD;
48
49
50
51 architecture art of AD is
52
53 --设置存储数据的寄存器
54
55 signal AD0_H_data,AD0_L_data,AD1_H_data,AD1_L_data,LED_ctrl: std_logic_vector(7 downto 0);
56
57 --数据缓冲寄存器
58
59 signal data_buf: std_logic_vector(7 downto 0);
60
61 --数据输出控制
62
63 signal data_outctl: std_logic;
64
65 signal datacnt:integer range 0 to 4000000;--分频计数
66
67 --LED闪烁使能
68
69 signal LED_flag: std_logic;
70
71
72
73
74
75 --统一编址,地址线数据线为八位,每个地址数据宽度8位
76
77 --"00000001" AD0_H_data0x01
78
79 --"00000010" AD0_L_data0x02
80
81 --"00000011" AD1_H_data0x03
82
83 --"00000100" AD1_L_data0x04
84
85 --"00000101" LED_ctrl0x05
86
87
88
89 begin
90
91
92
93 AD1_H_data <="10100001";
94
95 AD1_L_data <="00010001";
96
97 --LED 闪烁,用作CPLD运行指示
98
99
100
101 process(LED_ctrl) is
102
103 begin
104
105 if(LED_ctrl="00000001") then
106
107 LED_flag <= '0';
108
109 else
110
111 LED_flag <= '1';
112
113 end if;
114
115 end process;
116
117
118
119 process(CLK)is
120
121 begin
122
123
124
125
126
127 if(CLK'event and CLK='1') then
128
129 if(LED_flag='1') then
130
131 datacnt<=datacnt+1;
132
133 if (datacnt>2000000) then
134
135 LED <= '1';
136
137 end if;
138
139 if (datacnt>=4000000) then
140
141 LED <='0';
142
143 datacnt <=0;
144
145 end if;
146
147 end if;
148
149 end if;
150
151 end process;
152
153
154
155 --当读取CPLD数据时用来判断何时向总线上输出数据
156
157 data_outctl <= (not FSMC_NE4) and (not FSMC_NOE) and (FSMC_NWE);
158
159 D <= data_buf when (data_outctl='1') else "ZZZZZZZZ";--向数据线输出数据,否则保持为高阻态
160
161
162
163 -- 写操作,模式1,时序图在数据手册P331
164
165 process(FSMC_NE4,FSMC_NWE,Adr_L,FSMC_NOE) is --,FSMC_NBL,D,RESET
166
167 begin
168
169 if(FSMC_NWE'event and FSMC_NWE='1') then
170
171 if((FSMC_NOE and (not FSMC_NE4))='1') then
172
173 case (Adr_L) is
174
175 when "00000001" =>
176
177 AD0_H_data<= D; --0x01
178
179 when "00000010" =>
180
181 AD0_L_data<= D; --0x02
182
183 when "00000101" =>
184
185 LED_ctrl<= D;--0x05
186
187 when others =>
188
189 AD0_H_data<= AD0_H_data;
190
191 AD0_L_data<= AD0_L_data;
192
193 end case;
194
195 end if;
196
197 end if;
198
199 end process;
200
201
202
203 --读操作,模式1,P331
204
205 process(FSMC_NE4,FSMC_NWE,Adr_L,FSMC_NOE) is
206
207 begin
208
209 if(FSMC_NOE='0' and FSMC_NOE'event) then --直接在NOE的下降沿更新数据
210
211 case (Adr_L) is
212
213 when "00000001" =>
214
215 data_buf <= AD0_H_data; --0x01
216
217 when "00000010" =>
218
219 data_buf <= AD0_L_data; --0x02
220
221 when "00000011" =>
222
223 data_buf <= AD1_H_data; --0x03
224
225 when "00000100" =>
226
227 data_buf <= AD1_L_data; --0x04
228
229 when others => data_buf <= "ZZZZZZZZ";
230
231 end case;
232
233 end if;
234
235 end process;
236
237 end;
238
239
240
241
242
243
上一篇:STM3210XX中读写Flash的操作
下一篇:TLC2543和TLV5614的STM32程序
推荐帖子
- 电磁干扰抑制技术全面概述
- 提起电磁干扰(EMI)这个词,人们或许还感陌生,但EMI的影响却是几乎每个人都曾身经历过的。例如,观看电视时,附近有人使用电钻、电吹风等电器,会使电视画面出现雪花点,所声器里发出剌耳的噪声这类现象人们早已司空见惯、习以为常了,但是电磁干扰的危害却远不止如此。事实上,电磁干扰已使民航系统失效、通信不畅、计算机运行错误、自控设备误动作等,甚至危及人身安全。因此,加强电磁容性(EMC)知识的普及,提高EMI抑制技术,已成为当务之急。 所谓电磁兼容性是指电子线路、系统相互不影响,在电磁方面
- fish001 模拟与混合信号
- 两种无线数字调制解调器的设计对比
- 作者:中国人民解放军94569部队白欣摘要:本文介绍了分别基于CMX469A和MSM7512B设计实现的两种无线数字MODEM,说明了系统关键部分的硬件实现方法和软件设计,并对两种设计方案进行了对比分析。关键词:调制解调器;FSK;双工CMX469A和MSM7512B分别为CML公司和OKI公司生产的单片调制解调器芯片,本文分别采用这两种芯片,设计实现了应用于无线安防监控等领域的数字调制解调器,并对两种方案做了对比分析。图1CMX469A与单片机接口连接关系
- fighting RF/无线
- 全志R128 SDK HAL 模块开发指南——HW Spinlock
- #HWSpinlock##模块介绍hwspinlock提供一种硬件同步机制,lock操作可以防止多处理器同时处理共享数据。保证数据的一致性。##源码结构```├──hal_hwspinlock.c├──hwspinlock.h├──Kconfig├──Makefile├──platform│├──hwspinlock-sun20iw2.h└──platform-hwspinlock.h```##模块配置配置路径如下:```Ther
- aleksib 国产芯片交流
- 再说MSP430单片机的时钟问题
- MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根据需要选择合适的振荡频率,并可以在不需要时随时关闭振荡器,以节省功耗。这3个振荡器分别为: (1)DCO数控RC振荡器。它在芯片内部,不用时可以关闭。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响,且同一型号的芯片所产生的频率也不相同。但DCO的调节功能可以改善它的性能,他的调节分为以下3步:a:选择BCSCTL1.RSELx确定时钟的标称频率;b:选择DCOCTL.DCOx在标称频率基础上分段粗调
- Jacktang 微控制器 MCU
- 手机小常识
- Felix 移动便携
- 【翌创ET6001测评】串口通讯与MP3播放模块控制
- 由资料可知ET6001配有8个UART,借助UART不但可以实现串行通讯,还可以控制具有相应功能的串口设备,如串口屏、双PWM调节模块、超声波测距仪、温度调控器、数据记录模块等。为便于使用,这里是用J9接口的UART0来控制一款具有串口控制功能的MP3播放模块。图1J9接口在具体实现MP3播放模块控制前,先要解决UART0的数据发送功能。由于MP3播放模块的波特率9600bps,故UART0的初识化函数为:staticvoidUART0_init(
- jinglixixi 国产芯片交流
设计资源 培训 开发板 精华推荐
- 用于电池充电器的 30W、16.8V 交流转直流单输出电源
- 4012-LCDK1W-434、Si4012/Si4355 EZRadio 单向链路开发套件 434 MHz
- LT3091IFE 无镇流器负载共享的典型应用(使用 IMONP)
- D1 mini AHT20 BMP150 and Serial
- 用于恒流吸收器的 TL431A 可编程精密基准的典型应用
- 热插拔控制器在分体式供应系统中实施跟踪
- NSI45030ZT1G 用于基本交流应用的恒流 LED 驱动器的典型应用
- NCP3232N 大电流同步降压转换器的典型应用
- LT6600CS8-10 极低噪声、差分放大器和 10MHz 低通滤波器的典型应用电路
- DER-270 - 125W LLC DC-DC谐振转换器