完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
首先我确实是个新手,真的需要大神帮忙!这是模块的要求:
车费计数模块——:白天计费:其初值为9元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,之后每来一个脉冲(代表运行了1公里)其数值加1元,当车程超过10公里时每来一个脉冲其数值加1元。 夜间计费:其初值为11元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,之后每来一个脉冲(代表运行了1公里)其数值加2元,当车程超过10公里时每来一个脉冲其数值加3元 然后是 编译通不过的程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENtiTY COUNTER1 IS PORT(CLK_DIV:IN STD_LOGIC; CLR1:IN STD_LOGIC; K:IN STD_LOGIC; SS:IN STD_LOGIC; SI:IN STD_LOGIC_VECTOR(1 DOWNTO 0); C2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); C3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COUNTER1; ARCHITECTURE ONE OF COUNTER1 IS BEGIN PROCESS(CLK_DIV,CLR1,SI,SS) VARIABLE Q2: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE Q3: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF SS='0' THEN IF CLR1='0' THENQ2:="0000";Q3:="0000"; ELSIF CLK_DIV'EVENT AND CLK_DIV='1' THEN CASE SI IS WHEN "00" => IF K='0' THEN Q2:=Q2; Q3:=Q3; ELSE IF K='1' THEN IF Q2<"1001" THEN Q2:=Q2+1; ELSE Q2:="0000"; IF Q3<"1001" THEN Q3:=Q3+1; END IF; END IF; END IF; END IF; WHEN "01"=>Q2:="1001";Q3:="0000"; WHEN "10"=> IFQ2<"1001" THEN Q2:=Q2+1; ELSE Q2:="0000"; IF Q3<"1001" THEN Q3:=Q3+1; ELSE Q3:="0000"; END IF; END IF; WHEN "11"=> IFQ2<"1000" THEN Q2:=Q2+2; ELSE IF Q2=8 THEN IF Q3<"1001" THEN Q2:="0000"; Q3:=Q3+1; ELSE Q3:="0000"; END IF; ELSE IF Q2=9 then IF Q3<"1001" THEN Q2:="0001"; Q3:=Q3+1; ELSE Q3:="0000"; END IF; END IF; END IF; END IF; WHEN OTHERS=>NULL; END CASE; END IF; ELSE IF CLR1='0' THENQ2:="0000";Q3:="0000"; ELSIF CLK_DIV'EVENT AND CLK_DIV='1' THEN CASE SI IS WHEN "00" =>IF K='0' THEN Q2:=Q2;Q3:=Q3; ELSE IF K='1' THEN IF Q2<"1001" THEN Q2:=Q2+1; ELSE Q2:="0000"; IF Q3<"1001" THEN Q3:=Q3+1; END IF; END IF; END IF; END IF; WHEN "01"=>Q2:="0001";Q3:="0001"; WHEN "10"=> IF Q2<"1000" THEN Q2:=Q2+2; ELSE IF Q2=8 then IF Q3<"1001" THEN Q2:="0000"; Q3:=Q3+1; ELSE Q3:="0000"; END IF; ELSE IF Q2=9 THEN IF Q3<"1001" THEN Q2:="0001"; Q3:=Q3+1; ELSE Q3:="0000"; END IF; END IF; END IF; END IF; WHEN "11"=> IFQ2<"0111" THEN Q2:=Q2+3; ELSE IF Q2=7 THEN IF Q3<"1001" THEN Q2:="0000"; Q3:=Q3+1; ELSE Q3:="0000"; END IF; ELSE IF Q2=8 THEN IF Q3<"1001" THEN Q2:="0001"; Q3:=Q3+1; ELSE Q3:="0000"; END IF; ELSE IF Q2=9 THEN IF Q3<"1001" THEN Q2:="0010"; Q3:=Q3+1; ELSE Q3:="0000"; END IF; ELSE Q2:="0000"; IF Q3<"1001" THEN Q3:=Q3+1; ELSE Q3:="0000"; END IF; END IF; END IF; END IF; END IF; WHEN OTHERS=>NULL; END CASE; END IF; END IF; C2<=Q2; C3<=Q3; END PROCESS; END ONE; 真的感谢啊! |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1583 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1082 浏览 0 评论
2657 浏览 1 评论
2347 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2620 浏览 0 评论
2056 浏览 55 评论
6053 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 06:44 , Processed in 0.473626 second(s), Total 68, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号