logo资料库

汽车尾灯控制电路FPGA代码及仿真.pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
We've mailed a letter to 499 of the Fortune 500 companies (we didn't think Microsoft would listen), but that's just the start...
We've also mailed another letter to 500 non-profit groups around the world.
Windows 7 Sins: The case against Microsoft and proprietary software
电子线路测试实验 汽车尾灯控制电路 FPGA 代码及仿真答案 华中科技大学电信系 作者:华中科技大学 释梵 声明: 本答案出于学习交流之用,不可用于商业用途。 Windows 7 Sins: The case against Microsoft and proprietary software The new version of Microsoft's Windows operating system, Windows 7, has the same problem that Vista, XP, and all previous versions have had -- it's proprietary software. Users are not permitted to share or modify the Windows software, or examine how it works inside. The fact that Windows 7 is proprietary means that Microsoft asserts legal control over its users through a combination of copyrights, contracts, and patents. Microsoft uses this power to abuse computer users. At windows7sins.org, the Free Software Foundation lists seven examples of abuse committed by Microsoft. We've mailed a letter to 499 of the Fortune 500 companies (we didn't think Microsoft would listen), but that's just the start... 1. Poisoning education: Today, most children whose education involves computers are being taught to use one company's product: Microsoft's. Microsoft spends large sums on lobbyists and marketing to corrupt educational departments. An education using the power of computers should be a means to freedom and empowerment, not an avenue for one corporation to instill its monopoly. 2. Invading privacy: Microsoft uses software with backward names like Windows Genuine Advantage to inspect the contents of users' hard drives. The licensing agreement users are required to accept before using Windows warns that Microsoft claims the right to do this without warning. 3. Monopoly behavior: Nearly every computer purchased has Windows pre-installed -- but not by choice. Microsoft dictates requirements to hardware vendors, who will not offer PCs without Windows installed on them, despite many people asking for them. Even computers available with other operating systems like GNU/Linux pre-installed often had Windows on them first. We've also mailed another letter to 500 non-profit groups around the world. We'd love to send more letters to the Windows 7 decision makers that people have identified within their own organization or community, and with your help we can. If you donate $25 dollars, we'll send 50 more letters, donate $100 we'll send 200 letters and so on. Send us your suggestions for organizations who would benefit from our letter. 4. Lock-in: Microsoft regularly attempts to force updates on its users, by removing support for older versions of Windows and Office, and by inflating hardware requirements. For many people, this means having to throw away working computers just because they don't meet the unnecessary
requirements for the new Windows versions. 5. Abusing standards: Microsoft has attempted to block free standardization of document formats, because standards like OpenDocument Format would threaten the control they have now over users via proprietary Word formats. They have engaged in underhanded behavior, including bribing officials, in an attempt to stop such efforts. 6. Enforcing Digital Restrictions Management (DRM): With Windows Media Player, Microsoft works in collusion with the big media companies to build restrictions on copying and playing media into their operating system. For example, at the request of NBC, Microsoft was able to prevent Windows users from recording television shows that they have the legal right to record. 7. Threatening user security: Windows has a long history of security vulnerabilities, enabling the spread of viruses and allowing remote users to take over people's computers for use in spam- sending botnets. Because the software is secret, all users are dependent on Microsoft to fix these problems -- but Microsoft has its own security interests at heart, not those of its users. http://en.windows7sins.org/ 汽车驾驶室一般有刹车开关、左转弯开关和右转弯开关,司机通过操作这三个开关控制着汽 车尾灯的显示状态,以表明汽车当前的行驶状态。假设汽车尾部左、右两侧各有 3 个指示灯 (用发光二极管模拟),要求设计一个电路能实现如下功能。 1、汽车正常行驶时,尾部两侧的 6 个指示灯全灭灯。 操作方式:stop=0,left=0,right=0,reverse=0 2、刹车时,尾部两侧的灯全亮 操作方式:reverse=0,stop=1,left=0,right=0 3、右转弯时,右侧 3 个指示灯为右顺序循环点亮,频率为 1Hz,左侧灯全灭。 操作方式:reverse=0,stop=0,right=1,left=0
4、左转弯时,左侧 3 个指示灯为左顺序循环点亮,频率为 1Hz,右侧灯全灭。 操作方式:reverse=0,stop=0,right=0,left=1 5、右转弯刹车时,右侧的三个尾灯顺序循环点亮,左侧的灯全亮;左转弯刹车时,左侧的 三个尾部灯顺序循环点亮,右侧的灯全亮。 操作方式:reverse=0,stop=1,right=1,left=0;reverse=0,stop=1,right=0,left=1
6、倒车时,尾部两侧的 6 个指示灯随 CP 时钟脉冲同步闪烁。 操作方式:reverse=1 代码: /////////reverseLight.v module reverseLight(leftThree,rightThree,CP); output [2:0] leftThree,rightThree; input CP; reg[2:0] leftThree,rightThree; always@(posedge CP) begin end {leftThree,rightThree}<=~{leftThree,rightThree}; endmodule ////////////shutDown.v module shutDown(leftThree,rightThree,CP); output [2:0] leftThree,rightThree; input CP; reg[2:0] leftThree,rightThree; always@(posedge CP) begin {leftThree,rightThree}<=6'b000000; end endmodule ///////////shutLeft.v module shutLeft(leftThree,rightThree,CP); output [2:0] leftThree,rightThree; input CP; reg[2:0] leftThree,rightThree; integer i; always@(posedge CP) begin rightThree[0]<=1'b1;
rightThree[1]<=1'b1; rightThree[2]<=1'b1; i=i+1; if(i==3) i=0; if(i==0) leftThree<=3'b001; else if(i==1) else if(i==2) leftThree<=3'b010; leftThree<=3'b100; end endmodule ///////////////shutRight.v module shutRight(leftThree,rightThree,CP); output [2:0] leftThree,rightThree; input CP; reg[2:0] leftThree,rightThree; integer i; always@(posedge CP) begin leftThree[0]<=1'b1; leftThree[1]<=1'b1; leftThree[2]<=1'b1; i=i+1; if(i==3) i=0; if(i==0) rightThree<=3'b001; else if(i==1) else if(i==2) rightThree<=3'b010; rightThree<=3'b100; end endmodule //////////////////tailLight.v module tailLight(leftThree,rightThree,CP,stop,left,right,reverse,test); output [2:0] leftThree,rightThree,test; input CP,stop,left,right,reverse; wire [2:0] leftThree,rightThree,test; wire reverseLightCP,shutDownCP,shutLeftCP,shutRightCP,subTemplateCP,tailLightCP,turnLeftCP,tur nOnCP,turnRightCP; wire [2:0] leftThree0,rightThree0,
leftThree6,rightThree6,leftThree5,rightThree5,leftThree2,rightThree2,leftThree4,rightThree4,leftTh ree1,rightThree1,leftThreex,rightThreex; assign test=rightThree5[1]; assign leftThree[0]=(reverse&&leftThreex[0])||((~stop)&&(~left)&&(~right)&&leftThree0[0])|| (stop&&left&&(~right)&&leftThree6[0])||(stop&&(~left)&&right&&leftThree5[0])|| ((~stop)&&left&&(~right)&&leftThree2[0])||(stop&&(~left)&&(~right)&&leftThree4[0])|| ((~stop)&&(~left)&&right&&leftThree1[0]); assign leftThree[1]=(reverse&&leftThreex[1])||((~stop)&&(~left)&&(~right)&&leftThree1[1])|| (stop&&left&&(~right)&&leftThree6[1])||(stop&&(~left)&&right&&leftThree5[1])|| ((~stop)&&left&&(~right)&&leftThree2[1])||(stop&&(~left)&&(~right)&&leftThree4[1])|| ((~stop)&&(~left)&&right&&leftThree1[1]); assign leftThree[2]=(reverse&&leftThreex[2])||((~stop)&&(~left)&&(~right)&&leftThree2[2])|| (stop&&left&&(~right)&&leftThree6[2])||(stop&&(~left)&&right&&leftThree5[2])|| ((~stop)&&left&&(~right)&&leftThree2[2])||(stop&&(~left)&&(~right)&&leftThree4[2])|| ((~stop)&&(~left)&&right&&leftThree1[2]); assign rightThree[0]=(reverse&&rightThreex[0])|| ((~stop)&&(~left)&&(~right)&&rightThree0[0])||(stop&&left&&(~right)&&rightThree6[0])|| (stop&&(~left)&&right&&rightThree5[0])||((~stop)&&left&&(~right)&&rightThree2[0])|| (stop&&(~left)&&(~right)&&rightThree4[0])||((~stop)&&(~left)&&right&&rightThree1[0]); assign rightThree[1]=(reverse&&rightThreex[1])|| ((~stop)&&(~left)&&(~right)&&rightThree1[1])||(stop&&left&&(~right)&&rightThree6[1])|| (stop&&(~left)&&right&&rightThree5[1])||((~stop)&&left&&(~right)&&rightThree2[1])|| (stop&&(~left)&&(~right)&&rightThree4[1])||((~stop)&&(~left)&&right&&rightThree1[1]); assign rightThree[2]=(reverse&&rightThreex[2])|| ((~stop)&&(~left)&&(~right)&&rightThree2[2])||(stop&&left&&(~right)&&rightThree6[2])|| (stop&&(~left)&&right&&rightThree5[2])||((~stop)&&left&&(~right)&&rightThree2[2])|| (stop&&(~left)&&(~right)&&rightThree4[2])||((~stop)&&(~left)&&right&&rightThree1[2]); assign reverseLightCP=reverse&&CP; reverseLight Ux(leftThreex,rightThreex,reverseLightCP); assign shutDownCP=(~stop)&&(~left)&&(~right)&&CP; shutDown U0(leftThree0,rightThree0,shutDownCP); assign shutLeftCP=stop&&left&&(~right)&&CP; shutLeft U6(leftThree6,rightThree6,shutLeftCP); assign shutRightCP=stop&&(~left)&&right&&CP; shutRight U5(leftThree5,rightThree5,shutRightCP); assign turnLeftCP=(~stop)&&left&&(~right)&&CP; turnLeft U2(leftThree2,rightThree2,turnLeftCP); assign turnOnCP=stop&&(~left)&&(~right)&&CP; turnOn U4(leftThree4,rightThree4,turnOnCP);
assign turnRightCP=(~stop)&&(~left)&&right&&CP; turnRight U1(leftThree1,rightThree1,turnRightCP); endmodule ////////////turnLeft.v module turnLeft(leftThree,rightThree,CP); output [2:0] leftThree,rightThree; input CP; reg[2:0] leftThree,rightThree; integer i; always@(posedge CP) begin rightThree[0]<=1'b0; rightThree[1]<=1'b0; rightThree[2]<=1'b0; i=i+1; if(i==3) i=0; if(i==0) leftThree<=3'b001; else if(i==1) else if(i==2) leftThree<=3'b010; leftThree<=3'b100; end endmodule ///////////turnRight.v module turnRight(leftThree,rightThree,CP); output [2:0] leftThree,rightThree; input CP; reg[2:0] leftThree,rightThree; integer i; always@(posedge CP) begin leftThree[0]<=1'b0; leftThree[1]<=1'b0; leftThree[2]<=1'b0; i=i+1; if(i==3) i=0; if(i==0) rightThree<=3'b001; else if(i==1)
rightThree<=3'b010; else if(i==2) rightThree<=3'b100; end endmodule ////////////turnOn.v module turnOn(leftThree,rightThree,CP); output [2:0] leftThree,rightThree; input CP; reg[2:0] leftThree,rightThree; always@(posedge CP) begin {leftThree,rightThree}<=6'b111111; end endmodule
分享到:
收藏