Friday 21 March 2014

领取失业保险(EI)详解

转自移民茶馆网友:CDTERMINATOR 
2005年12月13日 

第一部分 简介 
1996年,广泛地征求了各个层次的加拿大人的意见,加拿大政府决定把 Unemployment Insurance(UI)改为Employment 
Insurance(EI),以反映经济、劳务市场和劳务工人的新的需求。我们中国人一般把EI叫做失业保险。 
加拿大政府对EI政策也在及时调整,希望EI能给每个加拿大人以均等的机会,更好的为失业者的家庭和孩子服务。2001年5月做了一些新的改动,我们提供的就是改动后的新政策。 
简短问答 
问:我在哪里申请EI? 
答:任何一个 Human Resources Development Canada(HRDC)办公室。 
问:什么时候申请? 
答:一失业马上就填表申请。 
问:第一张支票什么时候可以拿到? 
如果你符合申请EI的条件,并且准备齐全了要求的所有材料,你可以在4个星期内收到EI的支票。 
问:我应该收到多少钱? 
对于多数申请者,一般按你收入的55%计算。而对于低收入家庭,包括领牛奶金(Canada Child Tax Benefit)的家庭,可能高于55%。 
问:要工作多长时间才可以享受EI? 
答:一般要工作420-700小时,在某些情况下,可能需要910小时,后文会有交代。 
问:可以享受多长时间? 
14-45个星期 

第二部分 
什么人符合条件 
如果由于非你自己的原因引起的失业,而且你还没有找到工作,你就具备了申请EI的资格(这种EI叫做 Regular EI),具体的说,要求如下: 
1. 你必须申请 
2. 你在工作期间支付过EI 
3. 你至少连续7天没有工作,并且没有任何收入 
4. 你过去的工作时间要达到要求的小时数,这个数字取决于你所居住地区的失业率 
注: Regular EI给那些愿意工作并能够工作,但目前还没有找到工作的人。 

在哪里申请 
到你当地的HRDC办公室。可以在电话本的 Human Resource Development Canada目录下查找一个离你最近的办公室。 
什么时候、如何申请EI 
你收到最后一个雇主给你的ROE(Record of Employment),而且你没有找到任何新工作,就可以立即申请。如果14天内你还没有收到雇主的ROE,你也可以把申请表交上去,但你必须提供足够的证据包括你的工资存根。如果雇主没有拖欠你的钱,那么从你离开原来单位的那天算起,到你交表那天,最多可以等待4个星期。除了ROE外,还需要你的SIN卡和一个私人的作废了的支票,这样有关部门可以直接把你的EI钱存到你的帐户里。 
等待期限 
你申请EI后,要有2个星期的等待时间,这段时间没有EI。这段期间的任何收入都要在头3个星期的EI中扣除。 

怎样得到EI的钱 
每2个星期,你必须完成一个叫做 Claimant Report的表(用来汇报你这2个星期的情况),这些表是非常重要的,不完成这些表你的EI就会被断掉。你申请后不久,就会收到第一个Claimant Report表。一接到这个表,你必须按要求填写并寄回去,这样你还会再收到下一张表。第一张表上详细地给出了起始和终止日期,填写的内容不要超前这个起始日期,否则会影响你的EI。完成第一张表后,寄到指定的地址后,你会陆续收到怎样通过 TELEDEC-Direct Deposit的方式汇报你的情况的说明。TELEDEC-Direct Deposit是一种自动系统,凭它你可以通过电话汇报你的情况,并且可以把你的EI的钱自动存入你的帐户。这是汇报这2周情况以及收取EI的最快捷方法。 
使用TELEDEC-Direct Deposit的优点是: 
汇报过程简单 
钱到位的快(一般你汇报后)2个工作日就可以收到 
安全性好 
不需要邮寄费用 
在全加拿大范围内,TELEDEC 是每周7天全天候工作。如果你在星期六的任何时间和星期天下午3点之前打电话汇报你的情况,你的材料可以在当周及时处理。如果你觉得用TELEDEC,通过打电话汇报有困难,可以通过邮寄 Claimant Report 卡的方式来汇报,但必须填好并寄到指定地点。 
EI的发放办法 
如果没有准确的完成Claimant Report,你就得不到EI的钱。你准确的完成这些汇报并一切正常,大概在第4个星期,你就会收到你的第一笔EI钱。然后,每2个星期你就会收到一次。 
每个拿EI的人还会被分配给一个接入号(TAC),在你汇报 claimant Report的时候,用这个号和你的SIN卡号一起来完成。要注意的是,不要在要求的日期之前汇报。你汇报了这一次后,TELEDEC系统会告诉你下一次汇报的时间,最好把这个时间记到日历上。 
注:接入号码(TAC) 
在你的第一个通知上,会发现一个特别的电话接入号码(TAC),这个号码属于你自己使用。在汇报及询问EI有关问题时,会用到这个号码及你的SIN卡号。这个号码确保你的隐私受到保护。不要让其他人知道你的这个号码,以防有人用你的信息,在你不知情的情况下作出不利于你的事情,这些事情最终要由你负责。你要把这个号码放在安全的地方,为了更安全,建议你把TAC和SIN卡分开放置。不要忘了,你随手拿起TAC和SIN卡就可以给我们打电话。 

获取EI必须达到的工作小时数 
你有薪工作的小时数是决定能否拿到EI的基本条件。但因为工作性质的不同EI所要求的小时数也不同,性质指的是诸如兼职(非全天)的,加班以及周末加班U飧鲂∈笔募扑愎嬖蚝芗虻ィ何蘼勰阕鋈暗幕故羌嬷?非全天)的,或是季节工,只要这些工作是带薪的,都算数,以这些小时数加起来的总和来计算你的工作小时数。用小时数来代替星期数确保所有的工作时间都算数。 
对于加班时间的计算,不管加班时间的工钱乘以什么系数,但1小时就是1小时。 
根据某一地区的失业率,大多数人要在过去的52个星期内工作420-700小时才具备了基本的申请EI的条件。而对于已经拿过EI的人(无论你的EI多短),一般要等到910小时才有资格。违反EI规定的作弊者的小时数会增加。 

表1 失业率和要求的过去52周的小时数对照表 
当地失业率 需要的小时数 

0% - 6% 700 
6.1% - 7% 665 
7.1% - 8% 630 
8.1% - 9% 595 
9.1% - 10% 560 
10.1% - 11% 525 
11.1% - 12% 490 
12.1% - 13% 455 
13.1%以上 420 


特殊情况 
病假EI要工作600小时 
军人有特殊规定 
新政策 
从2000年10月日起,对于再次申请EI的人,如果在过去的时间段内,你没有工作够 Regular EI要求的足够的小时数,我们会向后计算四年,看你有没有拿过 Maternity EI 或 parental (抚养孩子EI). 
例如 
1996年某人拿到了EI 
1997年,他(她)的EI结束了,但他(她)没有立即工作,而是决定留在家里照顾孩子。 
1998年,1999年,2000年这三年都在照顾孩子并且做一些无薪的工作。 
2001年,他(她)工作了一段时间后,并达到了一点的小时数,又重新申请EI 
在这个例子里,他(她)收到了至少一周(1997年)的Maternity EI或 Parental EI。这就是说,你就不算重新申请EI者,你就不用一定要工作够910小时。可以象普通的申请者一样,你需要的最小小时数就是前面的表中根据失业率计算出来的那个数字。比如当地的失业率是5%,那么你工作700小时就够了。 

额外费用 

第三部分 
可以享受多长时间 
享受EI的长短取决于: 
1. 你所在地区的失业率 
2. 过去52个星期的工作小时数或者从你上一次EI开始算起-不管你的EI有多短。你工作的时间越多,拿EI的时间越长拿EI的时间长短由你工作过的小时数和申请之后当地的失业率决定。EI最短为14周,最长45周。 
有一个详细的对照表,笔者就不画出来了。可以到政府大楼(Harry Hays Building)去要一本 Employment Insurance,在第10页,你可以找到这个对照表。 

能拿到多少钱? 
EI的钱数是按照你过去工资收入的55%来计算的,但最多不能超过$413/星期。个人的情况不同,有的人可能超过工资收入的55%,但无论如何,最多都不能超过413。 

什么人拿到高于工资收入55%的EI 
如果你是低收入有孩子的家庭(年收入低于 $25,921),并且拿着政府的牛奶金,那么你的EI可以达到你收入的80%。你可以去看 Employment Insurance and Family Supplement. 

我们怎样计算你的工资收入 
你每周应该拿到EI的钱数有你在最近的26周所拿到的工钱决定。 
下面三个因素会影响你的EI 

1,从你最后一工作日往前算连续的26周,看看总工资收入是多少 
2,过去的26周中你工作了多少周 
3,还需要你居住地的失业率,根据这个失业率,我们给出一个最小除数(根据除数表来决定) 
4,在决定你过去26周的平均工作收入时,我们用你过去26周的总工资收入除以以下2项中大的那个: 
a) 你实际工作过的周数 
b) 最小除数 
5,最后决定乘以55%还是80%,但最多不能超过每周413。 


除数表 
当地失业率 最小除数 
0% - 6% 22 
6.1% - 7% 21 
7.1% - 8% 20 
8.1% - 9% 19 
9.1% - 10% 18 
10.1% - 11% 17 
11.1% - 12% 16 
12.1% - 13% 15 
13.1%以上 14 


第一个例子 
1,比如在过去的连续的26周内你全部工作并且拿到10,400元的收入 
2,你所居住地区的失业率是13.1%,所以除数是14 
3,由于你工作的周数26大于最小除数14,计算你每周的平均收入,就用你的总收入($10,400)除以26(工作的周数)(10,400÷26=400) 
4,如果你用55%的系数,那么你每周的EI就是$220.00(400×55%=220) 
第二个例子 
1, 在过去的26周中你工作了12周,并且拿到$3,600的收入 
2, 你居住的失业率为13.1%,所以这个最小除数是14 
3,由于你工作的周数(12)小于14,所以计算你的每周平均收入时,除数为14,而不是 
12。这样你的平均收入是(3,600÷14=275)$275 
5, 如果你用55%的系数,那么你每周的EI就是$141(275×55%=141) 
第三个例子 
1,比如在过去的连续的26周内你工作了17周并且拿到5,100元的收入 
2,你所居住地区的失业率是11.5%,所以除数是16 
3,由于你工作的周数17大于最小除数16,计算你每周的平均收入,就用你的总收入($10,400)除以17(工作的周数)(5,100÷7=300) 
4如果你用55%的系数,那么你每周的EI就是$165(300×55%=165) 

新内容 
2000年10月一日以前,对于已经拿过一次或多次EI的人来说,要有一个消减,使得EI的数额低于工资收入的55%。从2000年10月1日后,取消了这个消减,这些人也可以拿到最多达工作收入55%的EI。 
关于飞行员的(略) 
收入来源 
在拿EI期间,有二种类型的收入可能影响你的EI。 
1, 在你拿EI期间赚的各种钱 
2, 你的前雇主在你离职后给你的钱(分开给的) 
不要忘记,在这段等待时间你得到的任何收入,将一分不少的从头3个月的EI中扣除。 

拿EI期间也可以赚点钱 
许多人认为拿EI期间不可以做全职工作了,是的。但是,你可以做一些半工。只要每周的收入不超过50元,最多可以达到你EI钱数的25%,这样不会影响你的EI。而如果你的收入超过了这个限制,超过的部分会一分不少的扣除。 

不要忘记,你必须申报所有的这段时间所有的税前收入(可以通过TELEDEC系统或每两周一次的报告)。 

能够影响你EI的收入包括以下几种: 
1, 由于不公正的解雇而陪你的钱 
2, 被原单位重新找回做短期的工作所得到的收入 
3, 带薪培训的收入 
4,自雇的收入 
5, 
6, 收到Employment Pension, military or police pension, Canada orQuebec Pension Plan 或者 provincial plan based on employment。 

不影响EI的退休金包括: 
1, RRSP的私人退休金 
2, 残疾退休金 
3, 拿 survivor 或者 dependent 退休金的(略去一段) 

自动离职活被不正当开除 
如果你没有任何正当理由的自动离职或是因为你的错误而别开除,你不可以拿到EI。以下的一些情形是我们通常考虑的正当理由: 
1, 性骚扰 
2, 需要配偶及孩子一起搬家到另一个住所 
3, 歧视 
4, 工作环境危险或危害健康 
5, 需要照顾孩子或家庭的其它成员 
6, 合理的到新的工作岗位试讯 
7, 工作及工作环境的巨大改变而影响到了工资 
8, 过多的加班而且雇主拒付加班费 
9, 工作职责发生重大改变 
10, 由于非你的原因造成的和主管(supervisor)的关系紧张 
11, 你的雇主做非法的事情 
12, 受到某一协会,组织,工会成员的歧视 
13, 由于你雇主及同事的压力造成你的辞职 
其它合理的理由造成你的离职也会考虑。如果你不确定,可以到EI办公室不查。 
裁员 
当公司由于经营状况不好不得不缩小规模时,EI会帮助雇主和员工共同渡过难关。如果你的雇主正在减员并且给你机会辞去职位以保住另一个人的职位,你就可以正常离职。但是,你的公司一定要提供Layoff证明,说明你的离职是为了保护其它人的职位。当面对减员时,最好的办法是先咨询EI办公室的人,搞清楚各种情况。不要认为一切理所当然。 

劳动争端 
由于你所在单位的罢工或其它形式的劳动争端,而引起你失去工作或者影响你正常上工,一般没有资格享受EI。这要看你是否为工会的成员以及你做的是全职还是半工。 
但是,在下列情况下你还是可以拿到EI: 
1, 你没有参加争端(比如拒绝工作或参加纠察队) 
2, 你没有直接给予争端以经济援助 
3, 你对于这些活动没有任何兴趣(例如争端结果对你的工资收入等没有任何的影响)。 
如果你参加了这些活动,直到下列时刻你才有资格享受EI: 
1, 罢工或停业结束 
2, 你找到了另外的工作并且在那里交纳了EI保险费 
在停工之前,如果你的请假已经被批准了,象病假,生孩子,抚养孩子或一些强制性的培训,你可能还有资格享受EI。 

EI如何交税 
1,如果在上一个交税年,你的净收入低于$48,750,你就不用退回EI。如果超过了$48,750,那么超过的部分要退回30%。 
2如果你是第一次拿EI,你就不需要退回了(第一次拿EI指的是在过去的10年内,你从来没有拿过EI,或者拿过,但时间没有超过1个星期) 
3, 如果你拿的是 Maternity EI, Parental EI 或者是 Sickness EI,你不用退回。 
第四部分 
保护EI-需要你的帮助? 
Human Resources Development Canada对所发放的EI负责,确保EI不被滥用。有你的帮助,我们就可以减少出错的机会,使得EI真发放给该得到的人,发挥EI真正的作用-帮助那些暂时找不到工作的人摆脱困境。为了确保EI的正确发放,减少错误,我们会联系雇主及申请人核实情况。 
错误会出现的 
无论你是用电话汇报还是填表汇报,都可能出线错误。最常见的错误有以下几个: 
1,估计每周的收入而不是填写准确的数字 
2,忘记申报自己所有的收入 
3, 申报收入时填写了错误的数字 
4, 填写小时数出错 
有些错误可能会影响你按时收到EI,或者收到的钱数有错-比你应该收到的数额高或低。 
例如,估计收入(拿到EI后每月的收入)可能引起下列后果 
1,如果你估计的每周的收入多于实际的数字,那么你收到EI钱数可能就会少于你应该得到的数字。让我们知道,我们会检查你的材料确保你收到应得的钱数。 
2,如果你估计的每周的收入实际的数字,那么你收到的EI钱数就会多于你应得的数字。你多得到的这些钱是需要退还的,但我们会确保你的退款准确无误。我们也会核实你的材料直至准确反映你的情况。 

在EI上作弊 
任何人企图故意拿到多于你应得数额的EI,就是想占EI系统和其他加拿大人的便宜。一旦我们发现有人作弊,就会受到处罚,不但你现在的EI会收到影响,将来也会受到。 
以下一些例子可能导致你受到处罚 
1,有一个拿EI的人出国或到其他地方旅游,安排别人冒充自己签名去完成EI报告表。他将要因此受到处罚。例如,在过去的4周中,他用这种办法每周拿到了 $350的EI。如果查清了他和他的朋友是第一次做,或作过多次,情节不同,他们会得到不同处罚。 
2,如果他用这种办法获得了$1400的EI(每周350,共4周),他可能被罚款$700(理由是,你一共安排别人冒充你2次,每次罚款350)。你的朋友也会因为冒充别人汇报EI的非法行为,被罚款$700。 
3,有一个人在拿EI期间自己找工作干了8周,赚了$2,500,但没有报告而且继续拿着EI,总计拿了$3,200的EI。调查后证实一切属实,而且他知道这样做是非法的。他在前年还作过类似的事情,他当时不但需要退还非法收到的$3000,还有$2,000的罚款。由于这一次是重返,他除了要退回$3,200外,还受到了$6,400的罚款(2倍罚款) 。这个罚款不但反映了这个人的行为的恶劣性,也反映了重返的加班处罚。还有其他不用的情形可能引起处罚,处罚的成都可能会非常高。这视情节轻重而定,最严重的处罚可以达到你EI钱数的3倍,用来惩罚你的非法行为。 
同时,对于在EI上作弊的人,下一次申请的最低条件也发生了变化。 
例子1,如果你受到了$1,000以内的处罚,想再一次申请 Regular EI,你的最低工作小时数要增加25%。 
如果根据达到失业率计算出你的最小工作小时数应该是420小时,那么由于你的作弊行为,你要多105小时,就是要525小时,才可以再一次拿到EI。 
例子2,如果你受到了在$1,000-$4,999之间的处罚,想再一次申请 Regular EI,你的最低工作小时数要增加50%。 
例子3,如果你受到了多于$5,000的处罚,想再一次申请 Regular EI,你的最低工作小时数要增加75%。 
对于重返的,最低工作小时数要加倍。 



第五部分 责任和权利 
EI是保护加拿大人在失业过程中,更好的找到工作,渡过难关的一项财政保险网。可是,你享受EI权利的同时,还有责任遵守法律对EI的各种要求。 
这些责任包括: 
1, 愿意并且能够工作 
2, 一直在找工作 
3, 遵循EI工作人员的指导 
4, 准确申报EI期间的各种收入 
5, 申报EI期间各种工作,包括无薪的工作 
6, 任何时间不在居住地,要汇报 
7, 任何时间不在加拿大,要汇报 
多数情况下,你不在加拿大,不论任何时段,都不允许拿 Regular EI. 
你有以下权利: 
1, 申请EI 
2, 汇报你的情况 
3, 找工作 
4, 接收你应得到的EI钱 
5, 当你感觉到EI不对时,及时反应 
作为私人行为,你有权利到政府部门去看任何包含你的信息的记录。 

上诉 
在EI的应用过程中,由于对各种制度的不同理解,可能会出线不同的决定结果。加拿大人力资源发展中心(Human Resources Development Canada)尽量做到公平,但你可能仍然不同意最后的决定,并想和EI工作人员谈话。每个人都有一次机会以提供最新的信息,并且解答你各种各样的问题。 
如果你还想继续上诉,那么就必须写一份书面材料给当地EI办公室,清楚的说明什么决定你不同意,你为什么不同意这个决定。不要忘记把你的SIN卡号码附加进去。 
关于上诉的更多信息,联系EI办公室,去看一本叫做”Employment 
Insurance”的小册子,有一部分叫做”Appealing a Decision”,有相关信心。这本小册子在每一个EI办公室都有。

在加拿大如何办理离婚(加拿大离婚步骤

看到有越来越多的朋友询问关于在加拿大离婚的相关问题及一些非专业(甚至是不负责任)的回答,觉得有必要告诉大家正确的信息. 
首先声明,本人曾在(现在省政府的另外部门工作)加拿大离婚法庭 (court of queen's bench, divorce department, in Calgary)工作,保证以下所述绝对正确. 

1. 在哪儿办理? 
在加离婚适用的是加拿大联邦统一的法律(divorce act of Canada). 根据加离婚法律,只要一方在某地居住满一年,就可以向所在的省的任何一个法院(注:是高等法院,有的省叫court of queen's bench, 有的省叫superior court)提出离婚申请. 
在加离婚必须通过法院.没有中国的所谓协议离婚一说.即使双方没有任何争议,也要通过法院来办理离婚. 

2. 什么人可以在加拿大办理离婚? 
加离婚法律适用于所有在加拿大居住的人,不管是移民还是公民. 

3. 一定需要律师吗? 
律师并不是必需的.如果双方无孩子,财产纠纷,对自己的英文比较自信,可以自己办理离婚.如果想自己办,一般要去书店买所在的省的divorce kit(安省好像有免费的提供)和divorce guide(具体名字可能有出入),照着准备好所需要的文件,然后送到法院就可以了(当然是有具体步骤和法律程序的).注意,通常离婚双方是不需要出庭的. 
如果案情比较复杂,需要上法庭的,建议还是要请律师.如果案情简单,但对自己准备文件没有信心,又不想花冤枉钱请律师(一般收费没有低于$1,000.00的),可以寻找一个中间途径,可以联系一些legal assistant帮助你准备文件,但收费就便宜许多了.(当然,找俺这样的离婚法庭专业人士就更好了,呵呵). 

4. 一般离婚需要多长时间? 
注意,加拿大所有的离婚都必须通过法院来办理. 法院工作人员如果认为你送交的文件没问题,就会很快将文件递送给法官,法官根据具体情况来签署离婚判决书(注,法官一般主要是根据你送交的文件作出判决, 你一般是见不到法官的,这叫desk divorce).根据具体个案不同,一般要2-3个月(或者更长)才能办完离婚. 

5. 什么理由可以提出离婚? 
在加拿大申请离婚的理由有4个:separation excess one year, mental cruelty, physical cruelty, and adultery, 即:分居超过一年, 精神虐待, 肉体伤害和通奸.通常用的比较多理由就是separation one year-即分居一年. 可以选这4个理由中的一个或几个来提出离婚申请. 
如果想用分居一年作为理由提出离婚申请,并不是说一定要等到分居已经满一年之后才可以开始办理离婚,双方在分居期间就可以开始办理离婚了,因为按照法院要求的法律程序,送文件到法院是有顺序和期限的,并且法院处理文件也需要时间,理论上说,双方开始分居就可以开始办理离婚了,但是,你最后的文件送到法院,并且能让法官满意并签署你的离婚判决,这个时候双方的分居期限必须够一年.换句话说,如果双方一开始分居就开始办理离婚,到最后得到离婚判决要一年的时间才行. 

6. 在加拿大离婚都解决哪些问题? 
一般有如下几个问题可以得到解决:离婚, 孩子的监护和抚养,配偶的赡养, 财产分割. 这几个问题不一定要同时解决, 可以分开处理.比如,双方对离婚无争议,但在孩子的监护权上有分歧,在不损害孩子利益的前提下,可以把离婚先解决(先判决你们离婚), 孩子的问题慢慢来解决.(关于孩子抚养,配偶赡养等,具体的可以查看我的其他帖子或回帖). 
注意,加拿大的离婚法律没有倾向于妇女的规定-即男人如果要离婚就一定会倾家荡产,什么都要给女方. 

7. 在加拿大离婚一定要签分居协议或者离婚协议吗? 
分居协议或离婚协议不是必需要签的.如果双方有孩子和财产争议,签一个分居或离婚协议,可以明确双方分居期间的权利和义务(关于孩子和财产等),并且在办理离婚的时候就可以用这个协议来作为依据了. 

8. 到底该不该在加拿大办理离婚? 
关于这个问题,请朋友们一定慎重考虑.加拿大政府对其境外的离婚的认可是有条件的.用中国做例子.如果双方都在加拿大居住一定时间(至少超过一年),但基于某种原因,双方一起回国办理协议离婚(通过原结婚登记部门),或者双方都不回国,只是委托国内的朋友在某地法院诉讼离婚,对于上述的离婚,加拿大政府是不予承认的(加法律要求,在中国办理离婚时,至少一方已经在中国至少连续居住了一年以上,这样加政府才可予以认可).如果你想在加拿大长期居住,你就要想到将来在加拿大境内再结婚,或者是回中国和某人结婚然后sponsor其来加拿大这些具体问题.如果还涉及到孩子抚养和财产问题,你就还要想到离婚判决的执行问题.如果想在加拿大长期居住下去,我建议,最后还是在加拿大办理离婚的好.中国政府是承认加拿大的离婚判决的. 

如果你有具体问题,欢迎你写信来问,我的email:easy_divorce@yahoo.ca. 在calgary的朋友,我甚至可以当面免费咨询.我的电话:403-466-2132. 

vacation

http://www.westartravel.ca/

Tuesday 18 March 2014

altera modelsim

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY s_machine IS
PORT ( clk,reset : IN STD_LOGIC;
state_inputs : IN STD_LOGIC_VECTOR (0 TO 1);
comb_outputs : OUT STD_LOGIC_VECTOR (0 TO 1) );
END s_machine;

ARCHITECTURE behv OF s_machine IS
TYPE states IS (st0, st1, st2, st3); --定义states为枚举型数据类型
SIGNAL current_state, next_state: states;
BEGIN

REG: PROCESS (reset,clk) -- 时序逻辑进程
BEGIN
IF reset = '1' THEN
current_state <= st0; -- 异步复位
ELSIF clk='1' AND clk'EVENT THEN
current_state <= next_state; -- 当测到时钟上升沿时转换至下一状态
END IF;
END PROCESS; -- 由信号current_state将当前状态值带出此进程进入进程COM

COM: PROCESS(current_state, state_Inputs) -- 组合逻辑进程
BEGIN
CASE current_state IS -- 确定当前状态的状态值
WHEN st0 => comb_outputs <= "00"; -- 初始态译码输出"00"
IF state_inputs = "00" THEN --根据外部的状态控制输入"00"
next_state <= st0; --在下一时钟后进程REG的状态将维持为st0
ELSE
next_state <= st1; -- 否则在下一时钟后进程REG的状态将为st1
END IF;

WHEN st1 => comb_outputs <= "01";-- 对应状态st1的译码输出"01"
IF state_inputs = "00" THEN -- 根据外部的状态控制输入"00"
next_state <= st1; -- 在下一时钟后进程REG的状态将维持为st1
ELSE
next_state <= st2; -- 否则在下一时钟后进程REG的状态将为st2
END IF;

WHEN st2 => comb_outputs <= "10"; --以下依次类推
IF state_inputs = "11" THEN
next_state <= st2;
ELSE
next_state <= st3;
END IF;

WHEN st3 => comb_outputs <= "11";
IF state_inputs = "11" THEN
next_state <= st3;
ELSE
next_state <= st0; -- 否则在下一时钟后进程REG的状态返回st0
END IF;
END case;
END PROCESS; -- 由信号next_state将下一状态值带出此进程进入进程REG
END behv;






------------------------------------------------------------
-- VHDL Testbench for s_machine
-- 2014 3 18 15 25 4
-- Created by "EditVHDL"
-- "Copyright (c) 2002 Altium Limited"
------------------------------------------------------------

Library IEEE;
Use     IEEE.std_logic_1164.all;
Use     IEEE.std_logic_textio.all;
Use     STD.textio.all;
------------------------------------------------------------

------------------------------------------------------------
entity Tests_machine is
end Tests_machine;
------------------------------------------------------------

------------------------------------------------------------
architecture behave of Tests_machine is

    component s_machine
        port (
            clk: in std_logic;
            comb_outputs: out std_logic_vector(0 to 1);
            reset: in std_logic;
            state_inputs: in std_logic_vector(0 to 1)
        );
    end component;

    signal clk: std_logic;
    signal comb_outputs: std_logic_vector(0 to 1);
    signal reset: std_logic;
    signal state_inputs: std_logic_vector(0 to 1);
constant clk_period : time := 50 ns;

begin
    DUT:s_machine port map (
        clk => clk,
        comb_outputs => comb_outputs,
        reset => reset,
        state_inputs => state_inputs
    );

    STIMULUS0:process
    begin
        clk <= '0';
        wait for clk_period/2;  --for 0.5 ns signal is '0'.
        clk <= '1';
        wait for clk_period/2;  --for next 0.5 ns signal is '1'.
    end process;
 
STIMULUS1:process
    begin
    state_inputs <= "00";
    reset <= '0';
        wait for 15 ns;
        reset <='1';
        wait for clk_period;
 state_inputs <= "00";
 wait for clk_period;
 state_inputs <= "01";
 wait for clk_period;
 state_inputs <= "10";
 wait for clk_period;
 state_inputs <= "11";
 
    end process;

    

end architecture;



LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ADDER4 IS
PORT ( a, b : IN INTEGER RANGE 0 TO 9;
c, d, e, f : OUT integer);
END ADDER4;

ARCHITECTURE one OF ADDER4 IS
BEGIN
c <= a / b;
d <= a mod b;
e <= a * b;
f <= a ** b;
END one;


Monday 17 March 2014

altera waveform editor

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY abc IS
PORT ( a , b: IN STD_LOGIC;
c: OUT STD_LOGIC);
END abc;

ARCHITECTURE behave OF abc IS
BEGIN
PROCESS (a , b)
BEGIN
c <=  a and b;
END PROCESS;
END behave;


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY abc IS
PORT ( a , b: IN bit_vector(0 to 1);
c: OUT boolean);
END abc;

ARCHITECTURE behave OF abc IS
BEGIN
PROCESS (a , b)
BEGIN
c <=  (a >= b);
END PROCESS;
END behave;



Tuesday 11 March 2014

房屋是否发生过凶案

星报消息,本市市民Robert及Albert Armieri兄弟建立了网站 www.housecreep.com ,可让人查看物业有否曾经发生罪案。如果想知道屋子是否曾是大麻屋或制毒工场,或者前业主可有因火警、爆水管或污水倒流而申报过保险,则可以到 Homeverified.ca 及 Iverify.com 查看。
  据悉,按照目前的法规若地产经纪知悉该屋曾发生凶案,则有责任告诉其顾客,除非如果他(她)也不知道宅子的历史。
- See more at: http://www.bcbay.com/life/house/newsViewer.php?nid=137668&id=212541#sthash.ItCrElLd.dpuf

Tuesday 4 March 2014

C# sql



COMMANDTEXT
TABLE_1

TABLE_3


SELECT name,english+science+social as sum FROM TABLE_1


SELECT * FROM TABLE_1 WHERE  LEN(NAME) =3


SELECT * FROM TABLE_1 WHERE  NAME = 'S'


SELECT * FROM TABLE_1 WHERE  NAME LIKE '%W%'


SELECT * FROM TABLE_1 WHERE SCIENCE LIKE '[5-9][0-9]'


SELECT * FROM TABLE_1 WHERE GENDER LIKE '[^F]%'


SELECT * FROM TABLE_1 WHERE ENGLISH LIKE '[5-9][0-9]' AND SCIENCE LIKE'[5-9][0-9]'AND SOCIAL LIKE'[5-9][0-9]'


SELECT TOP 5 * FROM TABLE_1 ORDER BY NAME ASC


SELECT TOP 5 *,ENGLISH + SCIENCE+SOCIAL AS SUM FROM TABLE_1 ORDER BY ENGLISH + SCIENCE+SOCIAL ASC


SELECT TOP 4 *, ENGLISH+SOCIAL+SCIENCE AS SUM FROM (SELECT TOP 7 * FROM TABLE_1 ORDER BY ENGLISH+SCIENCE+SOCIAL DESC)  AS MIDDLE ORDER BY ENGLISH+SCIENCE+SOCIAL ASC

//select student whose total ranks 4-7


SELECT TOP 20 PERCENT * FROM TABLE_1 ORDER BY SOCIAL DESC


SELECT * FROM TABLE_1 WHERE ENGLISH > 40 + FLOOR(RAND()*20)


SELECT CLASS,AVG(ENGLISH) AS AVGENG, AVG(SCIENCE) AS AVGSIC, AVG(SOCIAL) AS AVGSOCI FROM TABLE_1 GROUP BY CLASS


SELECT CLASS,GENDER, AVG(ENGLISH) AS AVGENG, AVG(SCIENCE) AS AVGSIC, AVG(SOCIAL) AS AVGSOCI FROM TABLE_1 GROUP BY GENDER, CLASS


SELECT CLASS,GENDER, AVG(ENGLISH) AS AVGENG, AVG(SCIENCE) AS AVGSIC, AVG(SOCIAL) AS AVGSOCI FROM TABLE_1 WHERE ENGLISH > 40 AND  SOCIAL > 40 AND SCIENCE >40 GROUP BY ALL GENDER, CLASS


SELECT CLASS,GENDER, AVG(ENGLISH) AS AVGENG, AVG(SCIENCE) AS AVGSIC, AVG(SOCIAL) AS AVGSOCI FROM TABLE_1 GROUP BY GENDER, CLASS WITH CUBE


SELECT CLASS,GENDER, AVG(ENGLISH) AS AVGENG, AVG(SCIENCE) AS AVGSIC, AVG(SOCIAL) AS AVGSOCI FROM TABLE_1 GROUP BY GENDER, CLASS WITH ROLLUP ORDER BY AVG(ENGLISH) DESC


SELECT  X.GENDER, AVG(X.ENGLISH) AS AVG1, Y.GENDER, AVG(Y.ENGLISH) AS AVG2 FROM TABLE_1 AS X, TABLE_2 AS Y GROUP BY X.GENDER, Y.GENDER


SELECT * FROM TABLE_1 WHERE SOCIAL IN (SELECT MAX(SOCIAL) FROM TABLE_1)


SELECT CLASS, COUNT(CLASS) AS NUM FROM TABLE_1 GROUP BY CLASS


SELECT NAME,GENDER,SOCIAL FROM TABLE_1 WHERE SOCIAL > (SELECT AVG(SOCIAL) FROM TABLE_1)


SELECT NAME, ENGLISH, SCIENCE FROM TABLE_1 UNION SELECT NAME, ENGLISH, SCIENCE FROM TABLE_3


SELECT NAME, ENGLISH FROM TABLE_1 WHERE NAME IN (SELECT NAME FROM TABLE_3 WHERE GF>0) 


SELECT * FROM TABLE_1 WHERE GENDER = 'F' AND SOCIAL > ALL (SELECT SOCIAL FROM TABLE_1 WHERE GENDER = 'M')


SELECT X.NAME, X.SOCIAL, Y.GF FROM TABLE_1 AS X INNER JOIN TABLE_3 AS Y ON X.NAME = Y.NAME WHERE GENDER = 'M' AND Y.GF > ANY(SELECT Y.BF FROM TABLE_3 AS Y INNER JOIN TABLE_1 AS X ON X.NAME = Y.NAME WHERE X.GENDER='F')

//select M whose GF > minimum BF other Fs have.


SELECT X.NAME, X.GENDER, Y.GF, Y.BF FROM TABLE_1 AS X INNER JOIN TABLE_3 AS Y ON X.NAME = Y.NAME WHERE (GENDER = 'M' AND Y.GF > Y.BF) OR (GENDER = 'F' AND Y.BF > Y.GF) ORDER BY X.GENDER DESC

//select M who has more GF than BF, and F who has more BF than GF


SELECT NAME, SCIENCE, (SELECT AVG(SCIENCE) FROM TABLE_1) AS AVGSCI FROM TABLE_1 GROUP BY NAME,SCIENCE HAVING SCIENCE > (SELECT AVG(SCIENCE) FROM TABLE_1)


UPDATE Table_1 SET ENGLISH =  ((SELECT MAX(ENGLISH) FROM TABLE_1)+1) WHERE NAME = 'S'
//DELETE FROM TABLE_2 WHERE NAME IN (SELECT NAME FROM TABLE_2 WHERE GENDER = 'F' AND CLASS = 'D')



SELECT NAME,GENDER FROM TABLE_2 INTERSECT SELECT NAME,GENDER FROM TABLE_1


SELECT NAME,GENDER FROM TABLE_2 EXCEPT SELECT NAME,GENDER FROM TABLE_1


SELECT TABLE_1.NAME,TABLE_1.GENDER, TABLE_3.BF,TABLE_3.GF, TABLE_2.CLASS FROM TABLE_1 INNER JOIN TABLE_3 ON TABLE_1.NAME=TABLE_3.NAME INNER JOIN TABLE_2 ON TABLE_1.NAME =TABLE_2.NAME


SELECT TABLE_1.NAME,TABLE_1.GENDER, TABLE_3.BF,TABLE_3.GF FROM TABLE_1 INNER JOIN TABLE_3 ON TABLE_1.NAME=TABLE_3.NAME AND TABLE_3.GF>TABLE_3.BF AND TABLE_1.GENDER = 'M'


SELECT * FROM TABLE_2 WHERE NAME NOT IN (SELECT NAME FROM TABLE_1)


SELECT TABLE_1.NAME, TABLE_1.GENDER, (CASE TABLE_1.GENDER WHEN 'M' THEN TABLE_3.GF ELSE TABLE_3.BF END) AS  HETEROSEX FROM TABLE_1 INNER JOIN TABLE_3 ON TABLE_1.NAME = TABLE_3.NAME

//select opposite sex


CREATE UNIQUE INDEX ID ON TABLE_3(NAME)
//insert same names
//DROP INDEX TABLE_2.ID


UPDATE Table_3 SET BIRTHDAY = DATEADD(DAY,2,(SELECT BIRTHDAY FROM TABLE_3 WHERE NAME = 'S')) WHERE NAME ='S'





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace sql
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            button1.Focus();
         /*   delete("Table_1");
            delete("Table_3");
            delete("Table_2");

            Random r = new Random();
            for (int i = 0; i < 10; i++)
            {
                string name = "";
                for (int j = 0; j < r.Next(1,8); j++)
                {
                    name += (char)('A' + r.Next(26));
                }

                char gender = 'M';
                if (r.Next(2) == 1)
                {
                    gender = 'F';
                }

                char class1 = 'A';
                switch (r.Next(3))
                {
                    case 0:
                        class1 = 'A';
                        break;
                    case 1:
                        class1 = 'B';
                        break;
                    case 2:
                        class1 = 'C';
                        break;
                    default:
                        break;
                }

                textBox1.Text = "INSERT INTO Table_1(name,gender,english,science,social,class)VALUES('" + name + "' ,'" + gender + "'," + r.Next(100) + "," + r.Next(100) + "," + r.Next(100) + ",'" + class1 + "')";
                insertrow();

                textBox1.Text = "INSERT INTO Table_2(name,gender,english,science,social,class)VALUES('" + name + "' ,'" + gender + "'," + r.Next(100) + "," + r.Next(100) + "," + r.Next(100) + ",'" + class1 + "')";
                insertrow();

                textBox1.Text = "INSERT INTO Table_3(NAME,BF,GF)VALUES('" + name + "'," + r.Next(6) + "," + r.Next(6) + ")";
                insertrow();
            }*/

          //  for(int j=0; j<10;j++)
           // {
            textBox2.Text = "UPDATE Table_3 SET BIRTHDAY = '1990/01/01' WHERE NAME ='S'";
            update();
        }

        public void insertrow()
        {
            SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=study;Integrated Security=SSPI;");
            connection.Open();
            SqlCommand command = new SqlCommand();
            command.Connection = connection;
            command.CommandText = textBox1.Text;
            command.ExecuteNonQuery();
            connection.Close();
        }

        public void insertcolume()
        {
            SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=study;Integrated Security=SSPI;");
            connection.Open();
            SqlCommand command = new SqlCommand();
            command.Connection = connection;
            command.CommandText = "alter table [Table_1] add [ProductId] int default 0 NOT NULL";
            command.ExecuteNonQuery();
            connection.Close();
        }

        public DataTable display()
        {
            SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=study;Integrated Security=SSPI;");
            connection.Open();

            SqlDataAdapter adapter = new SqlDataAdapter();
            SqlCommand command = new SqlCommand();
            command.Connection = connection;
            command.CommandText = textBox4.Text;
            adapter.SelectCommand = command;

            DataTable table = new DataTable("test");
            adapter.Fill(table);

            connection.Close();
            return table;
        }

        public void delete()
        {
            SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=study;Integrated Security=SSPI;");
            connection.Open();

            SqlCommand command = new SqlCommand();
            command.Connection = connection;
            command.CommandText = textBox3.Text;
            command.ExecuteNonQuery();
            connection.Close();
        }

        public void update()
        {
            SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=study;Integrated Security=SSPI;");
            connection.Open();

            SqlCommand command = new SqlCommand();
            command.Connection = connection;
            command.CommandText = textBox2.Text;
            command.ExecuteNonQuery();
            connection.Close();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = display();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            insertrow();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            delete();
        }

        private void textBox4_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                dataGridView1.DataSource = display();
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            update();
        }

        private void textBox2_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                update();
            }
        }


    }
}