痤疮用什么药膏最有效| 什么是云| 正方体体积公式是什么| vivi是什么意思| 非主流什么意思| sod是什么意思| 重返20岁韩国版叫什么| 什么是宫寒| 苦瓜汤为什么要放黄豆| 口腔溃疡用什么药治疗| 三七花泡水喝有什么功效| 今年65岁属什么生肖| 日本豆腐是什么材料| 长沙有什么特产| 长智齿意味着什么| 金黄色葡萄球菌是什么菌| 医德是什么| 拔河是什么意思| 二五八万是什么意思| 淀粉可以用什么代替| aqi是什么意思| 子女缘薄是什么意思| 迁移宫代表什么| 14年属什么生肖| 想成为什么样的人| 扁的桃子叫什么名字| 7年之痒是什么意思| 非油炸是什么意思| 为什么夏天| 为什么要穿内裤| 打冷是什么意思| ms是什么意思| 老人爱睡觉什么征兆| 红色裤子配什么上衣好看| 缺锌有什么症状| 哈伦裤配什么上衣好看| 预防肺结核吃什么药| 口干舌燥吃什么药| 三点水一个分读什么| 射精无力吃什么药最佳| 保家仙是什么意思| 感冒是什么意思| 四不伤害是指什么| 榅桲是什么水果| 鸡蛋炒什么菜谱大全| 骨折后吃什么好| 强化是什么意思| 人瘦了是什么原因| 夏天适合种什么蔬菜| 兔子可以吃什么蔬菜| 甲壳素是什么东西| 脚掌疼是什么原因| 火鸡是什么鸡| 痘痘肌肤适合用什么牌子的护肤品| 降结肠在什么位置| 罗勒是什么| 圣贤是什么意思| 血脂高会导致什么后果| 催供香是什么意思| 鹅蛋脸适合什么刘海| ib是什么意思| 舌苔厚白中间有裂纹吃什么药| 感冒吃什么好的快| 虎口长痣代表什么| 盆腔积液什么意思| 狗屎运是什么意思| 牙龈为什么会萎缩| 处口念什么| 糖类抗原125偏高是什么意思| 梦见掉了三颗牙齿是什么意思| 5.11什么星座| 岁月蹉跎是什么意思| 不屑一顾的意思是什么| glenfiddich是什么酒| 文曲星什么意思| 减肥餐吃什么| 女人左手掌有痣代表什么| 头发斑秃是什么原因引起的| 10月26是什么星座| 出油多是什么原因| 糖醋里脊是什么菜系| 女士内裤用什么洗最好| 运是什么意思| 女性潮热是什么症状| 晚上手脚发热是什么原因| 2001年什么年| 甲醛闻多了有什么症状| 不耐受和过敏有什么区别| 盗窃是什么意思| 吃什么对眼睛有好处| 其余是什么意思| 流年是什么意思| 蒲公英泡水喝有什么功效| 日本的国宝是什么| 囧是什么意思| 梦见包丢了是什么意思| 去离子水是什么| hrd是什么| 中央办公厅主任什么级别| 什么是植发| 口腔痛什么原因| 控告是什么意思| 玄胡又叫什么| 痛什么什么痛| 什么的道理| 助产学出来是干什么的| 双龙什么| 学字五行属什么| 什么是性瘾| 女性得了性病有什么症状| 玉米什么季节成熟| 夫妻肺片是什么| 恭敬地看的词语是什么| 每天吃一根黄瓜有什么好处| 吃羊肉不能和什么一起吃| 南北杏和什么煲汤止咳化痰| 两毛四是什么军衔| 淋巴结发炎挂什么科| 待我长发及腰时下一句是什么| 肾盂是什么意思| 肾虚是什么症状| alcon是什么牌子| 尿常规粘液丝高是什么意思| 二婚结婚需要什么证件| 口是心非是什么动物| 周岁是什么意思| 所向披靡是什么意思| 蛋白粉和胶原蛋白粉有什么区别| 睾头囊肿是什么意思| cnn是什么意思| 微字五行属什么| 嘴角上火是什么原因| 牛黄是什么东西| 玄学是什么意思| 微量元素六项是什么检查| 长命百岁的动物是什么| 一个日一个安念什么字| modern是什么牌子| 农历5月25日是什么星座| 舒张压低是什么原因| 下关沱茶属于什么茶| 吃什么去胃火口臭| 办理结婚证需要什么材料| 飞蛾吃什么东西| gsy什么意思| 四不放过是什么| 曲苑杂坛为什么停播| 什么粮食| 湖南有什么特产| 什么品牌的卫浴好| 湿疹是什么病| 为什么一来月经就拉肚子| 大姨妈来了吃什么水果好| 天铁是什么| 家家酒是什么意思| 脑膜炎是什么病严重吗| 老年人脚浮肿是什么原因| 太白金星叫什么| 肝阳上亢是什么意思| 尿葡萄糖阴性什么意思| 体检胸透主要检查什么| 真露酒属于什么酒| 黄金五行属什么| 骨折和断了有什么区别| 骨髓捐赠对自己有什么影响没有| 怎么查自己五行缺什么| 撒拉族和回族有什么区别| 喜欢黑色的人是什么性格| 米加参念什么| 瓜蒌根为什么叫天花粉| 太阳花是什么花| array是什么意思| 探索是什么意思| 肝内多发低密度影是什么意思| 脸部爱出油是什么原因| 3月10日是什么星座| 无脑儿是什么意思| 母胎solo是什么意思| 眼花视力模糊是什么原因引起的| 咖啡色五行属什么| 梦见自己光脚走路是什么意思| 午饭吃什么| 抗衡是什么意思| 结膜炎用什么眼药水好| 怀孕16周要做什么检查| 吃什么拉什么是什么原因| ep什么意思| 巧囊是什么| 温水煮青蛙是什么意思| 孩子睡觉出汗多是什么原因| 彩超挂什么科| 带状疱疹后遗神经痛挂什么科| 舌头上有红点点是什么原因| 偶尔耳鸣是什么原因| 蛇盘疮是什么症状| 拔牙后吃什么消炎药最好| 讹人是什么意思| 浛是什么意思| 异常什么意思| 吃猪皮有什么好处和坏处| 学什么设计最赚钱| 两面性是什么意思| 白细胞低吃什么好| 支气管炎吃什么药有效| 肾素低说明什么| 小学生什么时候开学| 屁很臭是什么原因| 作风问题的核心是什么| 铅中毒用什么解毒| 什么叫痤疮| 有酒窝的女人代表什么| 前列腺炎用什么药| 什么草药治肿瘤最佳| 八一年属什么生肖| 牙齿突然出血是什么原因| x光是什么| 什么东西补血| 吃苋菜有什么好处| 长痘吃什么水果好| 轻度溶血是什么意思| 上环什么时候去最合适| 房性心动过速是什么意思| 晚上十一点是什么时辰| 为什么会堵奶| 解大便时有鲜血流出是什么原因| 小儿惊风是什么症状| 为什么眉毛会白| 耳朵痛是什么原因| 肚子上方中间疼是什么部位| 粪便隐血试验弱阳性是什么意思| 房早有什么危害| 山川是什么意思| 虎配什么生肖最好| 虫草花不能和什么一起吃| dior是什么牌子| 查血常规能查出什么| cocoon是什么意思| 是什么为什么怎么办| 骨折吃什么好| 什么原因导致缺钾| 尼泊尔属于什么国家| 咽炎吃什么消炎药最好| 如花似玉什么意思| 眼睛斜视是什么原因| 什么地开放填空| 维生素b是什么| 8月8号是什么星座| 阴人是什么意思| 新房送什么礼物好| 代沟是什么意思| 上海为什么被称为魔都| 什么津津| 鸿运当头是什么菜| 强直性脊柱炎吃什么药| 胰岛素偏高是什么意思| 软组织密度影什么意思| 睡觉嗓子干是什么原因| 抗心磷脂抗体是什么| 什么是风热感冒| 什么的脸| 三级综合医院是什么意思| rna是什么| au是什么货币| 蛀牙挂什么科| 百度

Lattice MXO2: 交通灯控制

嵌入式系统 时间:2025-08-04来源:电子森林

简易交通灯:本节将向您介绍Verilog语法之中的精髓内容——状态机,并且将利用状态机实现十字路口的交通灯。

硬件说明与实现项目框图


百度 你的闪光故事,是什么?当天的活动在愉悦轻松的氛围下进行,包括知名化妆师邰凌轶女士、新生代男演员张宥浩先生、知名旅行博主Lulu的旅行日记以及知名美妆博主Miss不吃藕等在内的数名贵宾盛情出席,现场星光闪耀,各界人士热情畅谈并留下属于自己的闪光瞬间。

上图为十字路口交通示意图分之路与主路,要求如下: * 交通灯主路上绿灯持续15s的时间,黄灯3s的时间,红灯10s的时间; * 交通灯支路上绿灯持续7s的时间, 黄灯持续3秒的时间,红灯18秒的时间;

根据上述要求,状态机设计框架分析如下: * S1:主路绿灯点亮,支路红灯点亮,持续15s的时间; * S2:主路黄灯点亮,支路红灯点亮,持续3s的时间; * S3:主路红灯点亮,支路绿灯点亮,持续10s的时间; * S4:主路红灯点亮,支路黄灯点亮,持续3s的时间;


Verilog代码


首先是时钟分频部分:

//********************************************************
//   Copyright(c)2016, STEP FPGA 
//   All rights reserved
//   File name       :   divide.v
//   Module name     :   divide
//   Author          :   STEP
//   Email           :   info@stepfpga.com
//   Data            :   2016/08/01
//   Version         :   V1.0
//   Description     :   
//
//   Modification history
//   ----------------------------------------------------------------------------
// Version       
// Description
//
//******************************************************** 
//*******************
//DEFINE MODULE PORT
//*******************
module divide(
	//INPUT
	clk			,
	rst_n			,
	//OUTPUT
	clkout			
);
	//*******************
	//DEFINE PARAMETER
	//*******************
	parameter			WIDTH	=	3;
	parameter			N		=	5; 	//*******************
	//DEFINE INPUT
	//*******************
	input 	clk,rst_n;          //*******************
	//DEFINE OUTPUT
	//*******************
	output	clkout; 	//********************
	//OUTPUT ATTRIBUTE
	//********************
	//REGS
	reg 	[WIDTH-1:0]		cnt_p,cnt_n;
	reg						clk_p,clk_n; 	
	assign clkout = (N==1)?clk:(N[0])?(clk_p&clk_n):clk_p; 	//Sequential logic style
	always @ (posedge clk)
		begin
			if(!rst_n)
				cnt_p<=0;
			else if (cnt_p==(N-1))
				cnt_p<=0;
			else cnt_p<=cnt_p+1;
		end 	always @ (negedge clk)
		begin
			if(!rst_n)
				cnt_n<=0;
			else if (cnt_n==(N-1))
				cnt_n<=0;
			else cnt_n<=cnt_n+1;
		end 	always @ (posedge clk)
		begin
			if(!rst_n)
				clk_p<=0;
			else if (cnt_p<(N>>1))  
				clk_p<=0;
			else 
				clk_p<=1;
		end 	always @ (negedge clk)
		begin
			if(!rst_n)
				clk_n<=0;
			else if (cnt_n<(N>>1))  
				clk_n<=0;
			else 
				clk_n<=1;
		end
		endmodule

接下来就是利用三段式状态机实现的交通灯部分:

// ********************************************************************
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// ********************************************************************
// File name    : traffic.v// Module name  : traffic
// Author       : STE
// Description  : 
// 
// --------------------------------------------------------------------
// Code Revision History : 
// --------------------------------------------------------------------
// Version: |Mod. Date:   |Changes Made:
// V1.0     |2017/03/02   |Initial ver
// --------------------------------------------------------------------
// Module Function:简易交通灯 
 module traffic(
	clk		,    //时钟
	rst_n		,    //复位
	out		     //三色led代表交通灯); 	
	input 	clk,rst_n;     
	output	reg[5:0]	out; 	
	parameter      	S1 = 4'b00,    //状态机状态编码
			S2 = 4'b01,
			S3 = 4'b10,
			S4 = 4'b11; 	
			parameter	time_s1 = 4'd15, //计时参数
			time_s2 = 4'd3,
			time_s3 = 4'd10,
			time_s4 = 4'd3;
	//交通灯的控制
	parameter	led_s1 = 6'b101011, // LED2 绿色 LED1 红色
			led_s2 = 6'b110011, // LED2 蓝色 LED1 红色
			led_s3 = 6'b011101, // LED2 红色 LED1 绿色
			led_s4 = 6'b011110; // LED2 红色 LED1 蓝色 	
			reg 	[3:0] 	timecont;
	reg 	[1:0] 	cur_state,next_state;  //现态、次态 	
	wire			clk1h;  //1Hz时钟 	//产生1秒的时钟周期
	divide #(.WIDTH(32),.N(12000000)) CLK1H (
					.clk(clk),
					.rst_n(rst_n),
					.clkout(clk1h));
	//第一段 同步逻辑 描述次态到现态的转移
	always @ (posedge clk1h or negedge rst_n)
	begin
		if(!rst_n) 
			cur_state <= S1;
        else 
			cur_state <= next_state;
	end
	//第二段 组合逻辑描述状态转移的判断
	always @ (cur_state or rst_n or timecont)
	begin
		if(!rst_n) begin
		        next_state = S1;
			end
		else begin
			case(cur_state)
				S1:begin
					if(timecont==1) 
						next_state = S2;
					else 
						next_state = S1;
				end 
                S2:begin
					if(timecont==1) 
						next_state = S3;
					else 
						next_state = S2;
				end 
                S3:begin
					if(timecont==1) 
						next_state = S4;
					else 
						next_state = S3;
				end 
                S4:begin
					if(timecont==1) 
						next_state = S1;
					else 
						next_state = S4;
				end 				
				default: next_state = S1;
			endcase
		end
	end
	//第三段  同步逻辑 描述次态的输出动作
	always @ (posedge clk1h or negedge rst_n)
	begin
		if(!rst_n==1) begin
			out <= led_s1;
			timecont <= time_s1;
			end 
		else begin
			case(next_state)
				S1:begin
					out <= led_s1;
					if(timecont == 1) 
						timecont <= time_s1;
					else 
						timecont <= timecont - 1;
				end 
				S2:begin
					out <= led_s2;
					if(timecont == 1) 
						timecont <= time_s2;
					else 
						timecont <= timecont - 1;
				end 
				S3:begin
					out <= led_s3;
					if(timecont == 1) 
						timecont <= time_s3;
					else 
						timecont <= timecont - 1;
				end 
				S4:begin
					out <= led_s4;
					if(timecont == 1) 
						timecont <= time_s4;
					else 
						timecont <= timecont - 1;
				end 				
				default:begin
					out <= led_s1;
					end
			endcase
		end
	end
	endmodule

引脚分配


小脚丫上正好有4路按键和4路开关,可以用来作为输入信号分别控制数码管的输出。按照下面表格定义输入输出信号

信号引脚信号引脚
clkC1rstL14
out[0]P2out[1]N2
out[2]M2out[3]P4
out[4]N3out[5]M3

配置好以后编译下载程序。您也可以试试修改程序,观察修改代码对于FPGA内部电路所造成的影响。

小结


状态机是一类很重要的时序逻辑电路,是许多数字系统的核心部件,掌握状态机的使用是利用FPGA与CPLD进行开发的一项必会技能,本小节的交通灯程序即是利用三段式状态机描述方法实现的,希望读者能够快速掌握这项技能。

关键词: 交通灯 状态机 FPGA Lattice Diamond 小脚丫

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版
三八线是什么意思 尿红细胞阳性什么意思 1963年属什么生肖 喜欢白色的女人是什么性格 吃brunch是什么意思啊
了什么意思 耐克属于什么档次 龙涎是什么 月经提前吃什么药 美国绿卡有什么好处
两头尖是什么中药 身心交瘁什么意思 喀秋莎什么意思 文艺范是什么意思 智齿什么时候拔合适
空蝶鞍是什么意思 一毛三是什么军衔 吸入物变应原筛查是什么 嗓子痒控制不住咳嗽是什么原因 辅警和协警有什么区别
过度是什么意思hcv9jop2ns4r.cn 瓠子和什么相克hcv8jop0ns1r.cn 化学阉割是什么yanzhenzixun.com 睡觉容易惊醒是什么原因hcv9jop3ns6r.cn 罗纹布是什么面料hcv9jop5ns3r.cn
幼儿急疹是什么原因引起的sanhestory.com 什么名字好听hcv8jop5ns0r.cn 海肠是什么动物hcv9jop0ns0r.cn 小腿肌肉疼是什么原因hcv7jop5ns5r.cn 锌是什么颜色hcv9jop3ns3r.cn
开什么玩笑bfb118.com 退行性病变是什么意思xianpinbao.com 卵巢炎症有什么症状hcv8jop5ns8r.cn 小儿急性喉炎吃什么药hcv8jop6ns1r.cn 安抚奶嘴什么时候戒掉hcv8jop1ns4r.cn
鋆字五行属什么hcv9jop3ns8r.cn 抑郁症去医院挂什么科hcv8jop6ns6r.cn 蓝蓝的天上白云飘是什么歌hcv8jop4ns5r.cn 排骨煮什么好吃hcv7jop7ns0r.cn 2月25是什么星座hcv9jop1ns6r.cn
百度