博文
〖004〗模60计数器BCD码输出 [AHDL](2006-10-02 10:22:00)
摘要:qh[3..0]、ql[3..0]分别输出高位和低位的BCD码。
subdesign bcd_m60
(
clk, cr, en : input;
qh[3..0], ql[3..0], c0 : output;
)
variable
counth[3..0], countl[3..0]: dff;
begin
counth[].clk = clk;
countl[].clk = clk;
counth[].clrn = cr;
countl[].clrn = cr;
qh[] = counth[];
ql[] = countl[];
if en then
if countl[] < 9 then
countl[] = countl[] + 1;
counth[] = counth[];
c0 = gnd;
......
〖004〗 7段译码器 [AHDL](2006-09-27 17:13:00)
摘要:课上老师讲的, 真值表方式:
SUBDESIGN 7seg
(
i[3..0] : INPUT;
a, b, c, d, e, f, g : OUTPUT;
)
BEGIN
TABLE
i[3..0] => a, b, c, d, e, f, g;
0 => 0, 0, 0, 0, 0, 0, 1;
1 => 1, 0, 0, 1, 1, 1, 1;
2 => 0, 0, 1, 0, 0, 1, 0;
3 => 0, 0, 0, 0, 1, 1, 0;
4 => 1, 0, 0, 1, 1, 0, 0;
5 => 0, 1, 0, 0, 1, 0, 0;
&......
〖003〗三位加法器 [Verilog HDL模块的基本概念](2006-06-16 21:36:00)
摘要:参考: 《CPLD与单片机综合应用技术》(周立功)
实验板: 网助二号
例 5.2.3
module adder(count, sum, a, b, cin);
input [2:0] a, b;
input cin;
output count;
output [2:0] sum;
assign {count, sum} = a + b + cin;
endmodule
★ 此例描述了一个名为adder的三位加法器,可根据2个三比特数a、b及进位(cin)计算出和(sum)以及向上进位(count)。 "{ }"是拼接符,把count和sum拼接为一个4位的信号。
如何验证其正确性呢?开始将a的3个端口接了三个拨码开关,b的3个端口接了三个按钮开关(因为板上资源只有4个拨码开关和4个按钮开关),将相加得到的和sum的三个端口接三个LED显示结果, 进位位count同样接LED显示是否有进位,进位cin置为0。虽然这样的接法可以通过开关输入两个加数,也能看到结果,得出该模块的正确性,但总觉得这么手工输入的办法有些蠢,也没有发挥这块板MCU+CPLD综合的优势,于是产生如下方案。
用51单片机的P0口低3位产生被加数a, P2口低3位产生加数b, 得到的和还有进位仍然通过LED显示。开始想用二重循环产生所有的组合,被加数有8种情况,加数有8种情况,共可得到8×8=64种组合,但这样一来即不容易验证,二来也没必要,所以最终决定将b数值确定为01h, 而a的值由000b递增为111b这8个状态,分别与b相加后得到结果为001b,010b,011b,……,111b(第7个结果),再加01h后将产生进位,与后三位合并后为1000b,每个状态后延时1s以便观察,如此循环。上述过程中前一级的进位cin接地,即始终为0。
51单片机程序:
org 0000h
start: mov p2, #01h
&......
〖002〗二选一多路器[Verilog HDL模块的基本概念](2006-06-10 16:01:00)
摘要:参考:《单片机与CPLD综合应用技术》(周立功)
实验板: 网助二号
从几个简单Verilog HDL程序了解Verilog HDL模块的特性。
例5.2.1
module muxtwo(out, a, b, sl);
input a, b, sl;
output out;
reg out;
always @ (sl or a or b)
if(!sl)
out = a;
else
out = b;
endmodule
这几天看了许多不常见的符号,正好拿来组成以下框图表示上述模块:
____
a ───┤ ╲
ㄧ ├─── out
b ───┤ ╱
 ̄ ̄ㄧ
sl ─────┘
由于Verilog HDL是与C语言类似的, 所以不难理解此模块muxtwo的作用。这是一个二选一多路器(想起了数电里学过的数据选择器,又叫多路选择器Multiplexer, 简写为MUX), 即选择由out端输出a还是b由sl电平决定。sl为0时输出out与a相同; 否则与b相同。"always @ (sl or a or b)"这一句表示只要sl,或a,或b其中有一个变化,就执行下面......
〖001〗三人表决器(2006-05-02 21:57:00)
摘要:万事开头难啊,Blog开这了个EDA·HDL〖〗分类,Starting ……
关于下载线的驱动配置,参见:安装下载电缆的驱动程序。
实验参考: 10分钟学会PLD设计。
实验板: 网助二号。
实验题目:
分别采用VHDL、Verilog-HDL和原理图输入方式设计一个简单的三人表决器,并下载到实验板进行实际运行。
三人表决器的功能描述:三个人分别用手指拨动开关SW1、SW2、SW3来表示自己的意愿,如果对某决议同意,各人就把自己的指拨开关拨到高电平(上方),不同意就把自己的指拨开关拨到低电平(下方)。表决结果用LED(高电平亮)显示,如果决议通过那么实验板上L2(绿灯,本实验板上为L1)亮;如果不通过那么实验板上L1(红灯,本实验板上为L5)亮;如果对某个决议有任意二到三人同意,那么此决议通过,L2亮;如果对某个决议只有一个人或没人同意,那么此决议不通过,L1亮。
方案一:采用原理图输入
方案二:采用VHDL语言 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY majority_voter IS
PORT(SW : IN std_logic_vector(3 DOWNTO 1);
L : OUT std_logic_vector(2 DOWNTO 1));
END majority_voter; ARCHITECTURE concurrent OF majority_voter IS BEGIN
WITH SW SELECT
L <= "10" WHEN "011",
"10" WHEN "101",
"1......
〖000〗CPLD实验板之网助二号(2006-05-02 21:40:00)
摘要:这块板是一个MCU+CPLD的综合板,是笨笨工作室为帮助爱好者实践所设计的一块板,它是笨笨老师网助计划的第二块板,有兴趣的请到笨笨工作室查看网助2号。
以下资源的介绍均来自于笨笨工作室, 贴上来方便查阅:
★公用部分功能:
(1)双电源供电系统,使你在任何时候都能方便的使用,并教会你如何设计稳压电路和USB供电的知识,可外接直流9V或者USB口取电,USB口有保护电路设计,确保计算机不受影响。
(2)输入输出设备:8个跑马灯指示、四个数码管显示、四个按键输入、四个拨码开关,可以满足你如何的输入要求。
(3)通信设备:具有RS232接口便于和其他单片机系统或者计算机进行通信;
(4)音乐设备:蜂鸣器奏出的《祝你平安》和《生日快乐》你听过吗?酷极拉!
(5)红外接口设备:板子有一个红外接近开关电路,就象自动开关的门的功能你2分钟就可以实现;还有一个红外接收接口,用来接收各种遥控器的信号的,也许你听说过万能遥控器吧,有兴趣你可以做做。
(6)输出电源:板子为外部电路提供5V电压输出。
★单片机特有功能:
(1)传感器输入设备:有一个DS180温度信号输入接口,已具有AD采集输入功能,加上AD芯片即可调试AD采集,完成大部分测控系统功能。
(2)液晶显示接口:具有1602型字符液晶、122×32、128×64等各种点阵液晶的并口、串口双接口,非常方便你使用。
(3)PC键盘接口:有很多人很喜欢用单片机控制计算机的键盘来输入,这样就有了103的按键,非常好玩并不用作电路,你要是需要或者有兴趣,这个板子直接有PC键盘接口,插上键盘,你就可以有一大堆按键拉,^_^。
(4)扩展接口:板子把单片机的40个管脚全部扩展出来,便于你扩展其他功能。
(5)在线下载程序功能:单片机的程序都不需要其他设备来烧写,板子已具有自动从计算机下载程序的功能,方便你调试和修改程序。
★CPLD特有功能:
(1)PWM功能输出:CPLD可以完成你对外部电机或者使其他要求脉宽调制信号的电路。
(2)在线下载程序功能:CPLD的程序都不需要其他设备来烧写,板子已具有自动从计算机下载程序的功能,方便你调试和修改程序。
★接口说明:
(1)单片......